* expr.c (JSR): Avoid undefined operation on PC.
authorAndreas Schwab <schwab@suse.de>
Tue, 25 Jun 2002 13:27:19 +0000 (13:27 +0000)
committerAndreas Schwab <schwab@gcc.gnu.org>
Tue, 25 Jun 2002 13:27:19 +0000 (13:27 +0000)
From-SVN: r54987

gcc/java/ChangeLog
gcc/java/expr.c

index 3ec4beedcbdb93a1bc03820b7de29383150cce11..e92ceff7d2a9f1cb397e5f39905398f824260b6c 100644 (file)
@@ -1,3 +1,7 @@
+2002-06-25  Andreas Schwab  <schwab@suse.de>
+
+       * expr.c (JSR): Avoid undefined operation on PC.
+
 2002-06-21  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
 
        * decl.c (clear_binding_level): Const-ify.
index 08525beb90b5bbb6b5ea1acb545f3a16f9349498..3b765e43412cf59053ad2d4cf88b5943287b76f9 100644 (file)
@@ -2946,7 +2946,11 @@ process_jvm_instruction (PC, byte_ops, length)
   }
 
 #define JSR(OPERAND_TYPE, OPERAND_VALUE) \
-  build_java_jsr (oldpc+OPERAND_VALUE, PC);
+  {                                                \
+    /* OPERAND_VALUE may have side-effects on PC */ \
+    int opvalue = OPERAND_VALUE;                   \
+    build_java_jsr (oldpc + opvalue, PC);          \
+  }
 
 /* Push a constant onto the stack. */
 #define PUSHC(OPERAND_TYPE, OPERAND_VALUE) \