diff options
author | Richard Kenner <kenner@gcc.gnu.org> | 1993-07-28 15:35:58 -0400 |
---|---|---|
committer | Richard Kenner <kenner@gcc.gnu.org> | 1993-07-28 15:35:58 -0400 |
commit | a0a34f94fa3e47e07d747d4d17fb6198bcc22724 (patch) | |
tree | 6171a58dd6dbcdeb89e672a27ac76d417250574f /gcc | |
parent | a5dbd798f2a0f2cac3517c7a38e41f1dedeae9be (diff) | |
download | gcc-a0a34f94fa3e47e07d747d4d17fb6198bcc22724.zip gcc-a0a34f94fa3e47e07d747d4d17fb6198bcc22724.tar.gz gcc-a0a34f94fa3e47e07d747d4d17fb6198bcc22724.tar.bz2 |
(expand_return): Set TREE_SIDE_EFFECTS on MODIFY_EXPR.
From-SVN: r5033
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/stmt.c | 19 |
1 files changed, 13 insertions, 6 deletions
@@ -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; } |