test-all を -w をつけて動かしたときに、
  TC_Enumerable#test_to_set = (eval):2: warning: method redefined;
discarding old initialize
  /extdisk/chkbuild/chkbuild/tmp/build/ruby-trunk/20111119T160600Z/ruby/lib/set.rb:613:
warning: previous definition of initialize was here
という警告が出たり出なかったりすることで気がついたのですが、以下のプログラムの、
GC.start の有無で警告が出るか出ないか変わります。

以下のように、GC.start を呼ばない場合、警告が出ません。

% ./ruby -w -e '
class C
  def m() end
  alias m2 m
  remove_method :m2
  #GC.start
  def m() end
end
'

以下のように、GC.start を呼ぶ場合、警告が出ます。

% ./ruby -w -e '
class C
  def m() end
  alias m2 m
  remove_method :m2
  GC.start
  def m() end
end
'
-e:7: warning: method redefined; discarding old m
-e:3: warning: previous definition of m was here

これはそういうものなんでしょうか?

% ./ruby -v
ruby 2.0.0dev (2011-11-19 trunk 33791) [x86_64-linux]
-- 
[田中 哲][たなか あきら][Tanaka Akira]