aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRichard Kenner <kenner@gcc.gnu.org>1993-07-28 15:35:58 -0400
committerRichard Kenner <kenner@gcc.gnu.org>1993-07-28 15:35:58 -0400
commita0a34f94fa3e47e07d747d4d17fb6198bcc22724 (patch)
tree6171a58dd6dbcdeb89e672a27ac76d417250574f
parenta5dbd798f2a0f2cac3517c7a38e41f1dedeae9be (diff)
downloadgcc-a0a34f94fa3e47e07d747d4d17fb6198bcc22724.zip
gcc-a0a34f94fa3e47e07d747d4d17fb6198bcc22724.tar.gz
gcc-a0a34f94fa3e47e07d747d4d17fb6198bcc22724.tar.bz2
(expand_return): Set TREE_SIDE_EFFECTS on MODIFY_EXPR.
From-SVN: r5033
-rw-r--r--gcc/stmt.c19
1 files changed, 13 insertions, 6 deletions
diff --git a/gcc/stmt.c b/gcc/stmt.c
index 940f374..52beb26 100644
--- a/gcc/stmt.c
+++ b/gcc/stmt.c
@@ -2337,14 +2337,21 @@ expand_return (retval)
|| TREE_CODE (TREE_OPERAND (retval_rhs, 2)) == CALL_EXPR))
{
rtx label = gen_label_rtx ();
+ tree expr;
+
do_jump (TREE_OPERAND (retval_rhs, 0), label, NULL_RTX);
- expand_return (build (MODIFY_EXPR, TREE_TYPE (current_function_decl),
- DECL_RESULT (current_function_decl),
- TREE_OPERAND (retval_rhs, 1)));
+ expr = build (MODIFY_EXPR, TREE_TYPE (current_function_decl),
+ DECL_RESULT (current_function_decl),
+ TREE_OPERAND (retval_rhs, 1));
+ TREE_SIDE_EFFECTS (expr) = 1;
+ expand_return (expr);
emit_label (label);
- expand_return (build (MODIFY_EXPR, TREE_TYPE (current_function_decl),
- DECL_RESULT (current_function_decl),
- TREE_OPERAND (retval_rhs, 2)));
+
+ expr = build (MODIFY_EXPR, TREE_TYPE (current_function_decl),
+ DECL_RESULT (current_function_decl),
+ TREE_OPERAND (retval_rhs, 2));
+ TREE_SIDE_EFFECTS (expr) = 1;
+ expand_return (expr);
return;
}