This is the mail archive of the gcc-bugs@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

[Bug c++/19317] [4.1 Regression] removing a temporary return value when we cannot


------- Additional Comments From cvs-commit at gcc dot gnu dot org  2005-06-23 14:44 -------
Subject: Bug 19317

CVSROOT:	/cvs/gcc
Module name:	gcc
Changes by:	jason@gcc.gnu.org	2005-06-23 14:44:21

Modified files:
	gcc            : ChangeLog tree.h calls.c tree-inline.c 
	                 tree-pretty-print.c gimplify.c tree-nrv.c 
	                 tree-pass.h tree-optimize.c 
	gcc/cp         : ChangeLog semantics.c 
Added files:
	gcc/testsuite/g++.dg/opt: nrv9.C 

Log message:
	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.

Patches:
http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/ChangeLog.diff?cvsroot=gcc&r1=2.9211&r2=2.9212
http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/tree.h.diff?cvsroot=gcc&r1=1.737&r2=1.738
http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/calls.c.diff?cvsroot=gcc&r1=1.389&r2=1.390
http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/tree-inline.c.diff?cvsroot=gcc&r1=1.196&r2=1.197
http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/tree-pretty-print.c.diff?cvsroot=gcc&r1=2.63&r2=2.64
http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/gimplify.c.diff?cvsroot=gcc&r1=2.136&r2=2.137
http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/tree-nrv.c.diff?cvsroot=gcc&r1=2.7&r2=2.8
http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/tree-pass.h.diff?cvsroot=gcc&r1=2.42&r2=2.43
http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/tree-optimize.c.diff?cvsroot=gcc&r1=2.108&r2=2.109
http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/cp/ChangeLog.diff?cvsroot=gcc&r1=1.4797&r2=1.4798
http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/cp/semantics.c.diff?cvsroot=gcc&r1=1.477&r2=1.478
http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/testsuite/g++.dg/opt/nrv9.C.diff?cvsroot=gcc&r1=NONE&r2=1.1



-- 


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=19317


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]