Index: vm_eval.c =================================================================== --- vm_eval.c (revision 22918) +++ vm_eval.c (working copy) @@ -1127,7 +1127,7 @@ return yield_under(mod, mod, rb_ary_new4(argc, argv)); } -NORETURN(static VALUE rb_f_throw _((int, VALUE *))); +NORETURN(static void rb_f_throw _((int, VALUE *))); /* * call-seq: @@ -1141,7 +1141,7 @@ * Kernel::catch. */ -static VALUE +static void rb_f_throw(int argc, VALUE *argv) { VALUE tag, value; @@ -1164,9 +1164,6 @@ th->errinfo = NEW_THROW_OBJECT(tag, 0, TAG_THROW); JUMP_TAG(TAG_THROW); -#ifndef __GNUC__ - return Qnil; /* not reached */ -#endif } void @@ -1453,7 +1450,7 @@ rb_define_global_function("block_given?", rb_f_block_given_p, 0); rb_define_global_function("catch", rb_f_catch, -1); - rb_define_global_function("throw", rb_f_throw, -1); + rb_define_global_function("throw", (VALUE (*)())rb_f_throw, -1); rb_define_global_function("loop", rb_f_loop, 0);