parse.y (java_complete_lhs): Call force_evaluation_order after patch_newarray.
authorPer Bothner <bothner@gcc.gnu.org>
Tue, 16 Mar 1999 16:25:12 +0000 (08:25 -0800)
committerPer Bothner <bothner@gcc.gnu.org>
Tue, 16 Mar 1999 16:25:12 +0000 (08:25 -0800)
* parse.y (java_complete_lhs):  Call force_evaluation_order
after patch_newarray.
(patch_binop):  Don't call fold if there are side effects.

From-SVN: r25806

gcc/java/parse.y

index 3e5bd74..81f5cb0 100644 (file)
@@ -7889,7 +7889,8 @@ java_complete_lhs (node)
       /* They complete the array creation expression, if no errors
          were found. */
       CAN_COMPLETE_NORMALLY (node) = 1;
-      return (flag ? error_mark_node : patch_newarray (node));
+      return (flag ? error_mark_node
+             : force_evaluation_order (patch_newarray (node)));
 
     case NEW_CLASS_EXPR:
     case CALL_EXPR:
@@ -9268,7 +9269,10 @@ patch_binop (node, wfl_op1, wfl_op2)
   TREE_TYPE (node) = prom_type;
   TREE_SIDE_EFFECTS (node) = TREE_SIDE_EFFECTS (op1) | TREE_SIDE_EFFECTS (op2);
   
-  return fold (node);
+  /* fold does not respect side-effect order as required for Java but not C. */
+  if (! TREE_SIDE_EFFECTS (node))
+    node = fold (node);
+  return node;
 }
 
 /* Concatenate the STRING_CST CSTE and STRING. When AFTER is a non