diff options
author | Per Bothner <bothner@gcc.gnu.org> | 1999-03-16 08:25:12 -0800 |
---|---|---|
committer | Per Bothner <bothner@gcc.gnu.org> | 1999-03-16 08:25:12 -0800 |
commit | aee48ef856de3b97ef0c7335389a72180711d931 (patch) | |
tree | 08a34130f31dbd9cf682925a3ddda8eabe6290d2 /gcc | |
parent | 774018b9868eca23fea9594582fa6305a68d882e (diff) | |
download | gcc-aee48ef856de3b97ef0c7335389a72180711d931.zip gcc-aee48ef856de3b97ef0c7335389a72180711d931.tar.gz gcc-aee48ef856de3b97ef0c7335389a72180711d931.tar.bz2 |
parse.y (java_complete_lhs): Call force_evaluation_order after patch_newarray.
* 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
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/java/parse.y | 8 |
1 files changed, 6 insertions, 2 deletions
diff --git a/gcc/java/parse.y b/gcc/java/parse.y index 3e5bd74..81f5cb0 100644 --- a/gcc/java/parse.y +++ b/gcc/java/parse.y @@ -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 |