This is the mail archive of the
gcc-bugs@gcc.gnu.org
mailing list for the GCC project.
[Bug c++/16405] [3.4/4.1/4.2 Regression] Temporary aggregate copy not elided
- From: "jason at gcc dot gnu dot org" <gcc-bugzilla at gcc dot gnu dot org>
- To: gcc-bugs at gcc dot gnu dot org
- Date: 9 Feb 2006 09:54:44 -0000
- Subject: [Bug c++/16405] [3.4/4.1/4.2 Regression] Temporary aggregate copy not elided
- References: <bug-16405-7904@http.gcc.gnu.org/bugzilla/>
- Reply-to: gcc-bugzilla at gcc dot gnu dot org
------- Comment #10 from jason at gcc dot gnu dot org 2006-02-09 09:54 -------
Subject: Bug 16405
Author: jason
Date: Thu Feb 9 09:54:36 2006
New Revision: 110789
URL: http://gcc.gnu.org/viewcvs?root=gcc&view=rev&rev=110789
Log:
PR c++/25979
* tree.def: Elaborate on difference from MODIFY_EXPR.
* doc/c-tree.texi (INIT_EXPR): Likewise.
* gimplify.c (internal_get_tmp_var): Use INIT_EXPR.
(gimplify_decl_expr, gimplify_init_ctor_eval): Likewise.
(gimplify_target_expr): Likewise.
(gimplify_cond_expr): Remove target handling.
(gimplify_modify_expr): Don't clobber INIT_EXPR code here.
(gimplify_expr): Clobber it here.
(gimplify_modify_expr_rhs): Push assignment into COND_EXPR here.
Do return slot optimization if we have an INIT_EXPR.
PR tree-opt/24365
* tree-inline.c (declare_return_variable): Also clear
DECL_COMPLEX_GIMPLE_REG_P as needed in the modify_dest case.
PR c++/16405
* gimplify.c (gimplify_modify_expr_rhs): Re-enable *& handling.
PR middle-end/22439
* gimplify.c (gimplify_one_sizepos): Fix typo.
Modified:
trunk/gcc/ChangeLog
trunk/gcc/cp/ChangeLog
trunk/gcc/cp/cp-gimplify.c
trunk/gcc/cp/typeck2.c
trunk/gcc/doc/c-tree.texi
trunk/gcc/gimplify.c
trunk/gcc/testsuite/g++.dg/opt/temp1.C
trunk/gcc/tree-inline.c
trunk/gcc/tree.def
--
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=16405