OSDN Git Service

* verify-impl.c (verify_instructions_0) <op_return>: Special case
authortromey <tromey@138bc75d-0d04-0410-961f-82ee72b054a4>
Tue, 16 May 2006 22:06:25 +0000 (22:06 +0000)
committertromey <tromey@138bc75d-0d04-0410-961f-82ee72b054a4>
Tue, 16 May 2006 22:06:25 +0000 (22:06 +0000)
for Object.<init>.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@113830 138bc75d-0d04-0410-961f-82ee72b054a4

gcc/java/ChangeLog
gcc/java/verify-impl.c

index 3d2e47c..4677790 100644 (file)
@@ -1,3 +1,8 @@
+2006-05-16  Tom Tromey  <tromey@redhat.com>
+
+       * verify-impl.c (verify_instructions_0) <op_return>: Special case
+       for Object.<init>.
+
 2006-05-16  H.J. Lu  <hongjiu.lu@intel.com>
 
        PR driver/26885
index fc15407..f672fcf 100644 (file)
@@ -1,4 +1,4 @@
-/* Copyright (C) 2001, 2002, 2003, 2004, 2005  Free Software Foundation
+/* Copyright (C) 2001, 2002, 2003, 2004, 2005, 2006  Free Software Foundation
 
    This file is part of libgcj.
 
@@ -2887,9 +2887,11 @@ verify_instructions_0 (void)
          invalidate_pc ();
          break;
        case op_return:
-         /* We only need to check this when the return type is
-            void, because all instance initializers return void.  */
-         if (this_is_init)
+         /* We only need to check this when the return type is void,
+            because all instance initializers return void.  We also
+            need to special-case Object constructors, as they can't
+            call a superclass <init>.  */
+         if (this_is_init && vfr->current_class != vfy_object_type ())
            state_check_this_initialized (vfr->current_state);
          check_return_type (make_type (void_type));
          invalidate_pc ();