aboutsummaryrefslogtreecommitdiff
path: root/gcc/java/parse.c
diff options
context:
space:
mode:
authorPer Bothner <bothner@gcc.gnu.org>1999-03-16 08:25:14 -0800
committerPer Bothner <bothner@gcc.gnu.org>1999-03-16 08:25:14 -0800
commit4fdea7b0d18f3db1ac32a72673780fb73a35473a (patch)
tree99334cb36e515f04b27fef87a4cfa2a110fba082 /gcc/java/parse.c
parentaee48ef856de3b97ef0c7335389a72180711d931 (diff)
downloadgcc-4fdea7b0d18f3db1ac32a72673780fb73a35473a.zip
gcc-4fdea7b0d18f3db1ac32a72673780fb73a35473a.tar.gz
gcc-4fdea7b0d18f3db1ac32a72673780fb73a35473a.tar.bz2
parse.y (java_complete_lhs): Call force_evaluation_order after patch_newarray.
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
Diffstat (limited to 'gcc/java/parse.c')
-rw-r--r--gcc/java/parse.c8
1 files changed, 6 insertions, 2 deletions
diff --git a/gcc/java/parse.c b/gcc/java/parse.c
index f090ca5..dbefe7e 100644
--- a/gcc/java/parse.c
+++ b/gcc/java/parse.c
@@ -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