diff options
author | Mark Mitchell <mark@codesourcery.com> | 2003-03-24 08:31:36 +0000 |
---|---|---|
committer | Mark Mitchell <mmitchel@gcc.gnu.org> | 2003-03-24 08:31:36 +0000 |
commit | f29a2bd17dbd3bcd89fabb4af8e9c5aa7dd8d223 (patch) | |
tree | 85eda9fd606f02112ed55c3f9d9703201269055d /gcc/expr.c | |
parent | ffe4ebba87d78d4da242adb6e95d2976bd796d91 (diff) | |
download | gcc-f29a2bd17dbd3bcd89fabb4af8e9c5aa7dd8d223.zip gcc-f29a2bd17dbd3bcd89fabb4af8e9c5aa7dd8d223.tar.gz gcc-f29a2bd17dbd3bcd89fabb4af8e9c5aa7dd8d223.tar.bz2 |
re PR c++/7086 (compile time regression)
PR c++/7086
* c-typeck.c (c_mark_addressable): Adjust calls to
put_var_into_stack.
* expr.c (expand_expr): Likewise.
* function.c (put_var_into_stack): Add rescan parameter. Do not
call fixup_var_refs when rescan is false.
(gen_mem_addressof): Likewise.
(assign_parms): Adjust calls to put_var_into_stack.
(setjmp_protect): Likewise.
(setjmp_protect_args): Likewise.
* rtl.h (gen_mem_addressof): Change prototype.
* stmt.c (expand_decl): Adjust calls to put_var_into_stack.
* tree.h (put_var_into_stack): Change prototype.
PR c++/7086
* utils2.c: Adjust calls to put_var_into_stack.
PR c++/7086
* semantics.c (genrtl_named_return_value): Adjust calls to
put_var_into_stack.
* typeck.c (cxx_mark_addressable): Likewise.
PR c++/7086
* com.c (ffecom_sym_transform_): Adjust calls to
put_var_into_stack.
(ffe_mark_addressable): Likewise.
From-SVN: r64781
Diffstat (limited to 'gcc/expr.c')
-rw-r--r-- | gcc/expr.c | 12 |
1 files changed, 7 insertions, 5 deletions
@@ -6919,7 +6919,7 @@ expand_expr (exp, target, tmode, modifier) temp = SAVE_EXPR_RTL (exp); if (temp && GET_CODE (temp) == REG) { - put_var_into_stack (exp); + put_var_into_stack (exp, /*rescan=*/true); temp = SAVE_EXPR_RTL (exp); } if (temp == 0 || GET_CODE (temp) != MEM) @@ -7413,7 +7413,8 @@ expand_expr (exp, target, tmode, modifier) forcing the SAVE_EXPR into memory. */ if (TREE_CODE (TREE_OPERAND (exp, 0)) == SAVE_EXPR) { - put_var_into_stack (TREE_OPERAND (exp, 0)); + put_var_into_stack (TREE_OPERAND (exp, 0), + /*rescan=*/true); op0 = SAVE_EXPR_RTL (TREE_OPERAND (exp, 0)); } else @@ -9001,7 +9002,7 @@ expand_expr (exp, target, tmode, modifier) preserve_temp_slots (target); SET_DECL_RTL (slot, target); if (TREE_ADDRESSABLE (slot)) - put_var_into_stack (slot); + put_var_into_stack (slot, /*rescan=*/false); /* Since SLOT is not known to the called function to belong to its stack frame, we must build an explicit @@ -9040,7 +9041,7 @@ expand_expr (exp, target, tmode, modifier) /* If we must have an addressable slot, then make sure that the RTL that we just stored in slot is OK. */ if (TREE_ADDRESSABLE (slot)) - put_var_into_stack (slot); + put_var_into_stack (slot, /*rescan=*/true); } } @@ -9190,7 +9191,8 @@ expand_expr (exp, target, tmode, modifier) forcing the SAVE_EXPR into memory. */ if (TREE_CODE (TREE_OPERAND (exp, 0)) == SAVE_EXPR) { - put_var_into_stack (TREE_OPERAND (exp, 0)); + put_var_into_stack (TREE_OPERAND (exp, 0), + /*rescan=*/true); op0 = SAVE_EXPR_RTL (TREE_OPERAND (exp, 0)); } else |