parse.y (java_complete_lhs): Call force_evaluation_order after patch_newarray.
authorPer Bothner <bothner@gcc.gnu.org>
Tue, 16 Mar 1999 16:25:14 +0000 (08:25 -0800)
committerPer Bothner <bothner@gcc.gnu.org>
Tue, 16 Mar 1999 16:25:14 +0000 (08:25 -0800)
x
* 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: r25807

gcc/java/parse.c

index f090ca515f535d07ab92d3f36d2fd59a9cc72768..dbefe7eaf8044d12d323b4fef61fda6e832bd6d8 100644 (file)
@@ -10491,7 +10491,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:
@@ -11870,7 +11871,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