aboutsummaryrefslogtreecommitdiff
path: root/gcc/tree-optimize.c
diff options
context:
space:
mode:
authorJason Merrill <jason@redhat.com>2005-06-23 10:44:21 -0400
committerJason Merrill <jason@gcc.gnu.org>2005-06-23 10:44:21 -0400
commitfa47911c5600725d7d72e224e4a61829267b00b9 (patch)
tree672b804a497a6d4d52b747f00969c6d7b30ebbfb /gcc/tree-optimize.c
parentf565b0a1a58554b7dd3cbd540f6dca295bd0cdbe (diff)
downloadgcc-fa47911c5600725d7d72e224e4a61829267b00b9.zip
gcc-fa47911c5600725d7d72e224e4a61829267b00b9.tar.gz
gcc-fa47911c5600725d7d72e224e4a61829267b00b9.tar.bz2
re PR c++/19317 (removing a temporary return value when we cannot)
PR c++/19317 Leave the return slot target in the MODIFY_EXPR rather than making it an argument, but only use it if the CALL_EXPR has a flag set. * tree.h (CALL_EXPR_HAS_RETURN_SLOT_ADDR): Rename to CALL_EXPR_RETURN_SLOT_OPT. * calls.c (expand_call): Adjust. * tree-inline.c (expand_call_inline): Adjust. * tree-pretty-print.c (dump_generic_node): Adjust. And set the flag as appropriate. * gimplify.c (gimplify_modify_expr_rhs): Set CALL_EXPR_HAS_RETURN_SLOT_ADDR where the LHS is obviously safe. * tree-nrv.c (execute_return_slot_opt): Set CALL_EXPR_HAS_RETURN_SLOT_ADDR based on escape analysis. * tree-pass.h: Declare pass_return_slot. * tree-optimize.c (init_tree_optimization_passes): Add it. * cp/semantics.c (simplify_aggr_init_expr): Use CALL_EXPR_RETURN_SLOT_OPT, not CALL_EXPR_HAS_RETURN_SLOT_ADDR. From-SVN: r101269
Diffstat (limited to 'gcc/tree-optimize.c')
-rw-r--r--gcc/tree-optimize.c1
1 files changed, 1 insertions, 0 deletions
diff --git a/gcc/tree-optimize.c b/gcc/tree-optimize.c
index a33a710..c2f4fc9 100644
--- a/gcc/tree-optimize.c
+++ b/gcc/tree-optimize.c
@@ -397,6 +397,7 @@ init_tree_optimization_passes (void)
NEXT_PASS (pass_build_ssa);
NEXT_PASS (pass_build_pta);
NEXT_PASS (pass_may_alias);
+ NEXT_PASS (pass_return_slot);
NEXT_PASS (pass_del_pta);
NEXT_PASS (pass_rename_ssa_copies);
NEXT_PASS (pass_early_warn_uninitialized);