This is the mail archive of the
gcc-bugs@gcc.gnu.org
mailing list for the GCC project.
[Bug c++/23372] Temporary aggregate copy not elided when passing parameters by value
- From: "rguenth at tat dot physik dot uni-tuebingen dot de" <gcc-bugzilla at gcc dot gnu dot org>
- To: gcc-bugs at gcc dot gnu dot org
- Date: 13 Aug 2005 14:17:48 -0000
- Subject: [Bug c++/23372] Temporary aggregate copy not elided when passing parameters by value
- References: <20050813080257.23372.guillaume.melquiond@ens-lyon.fr>
- Reply-to: gcc-bugzilla at gcc dot gnu dot org
------- Additional Comments From rguenth at tat dot physik dot uni-tuebingen dot de 2005-08-13 14:17 -------
The problem is, we end up with
void g(A*) (a)
{
struct A D.1608;
<bb 0>:
D.1608 = *a;
f (D.1608) [tail call];
return;
}
after the tree optimizers. f (*a) would not be gimple, so we create
the temporary in the first place. TER does not remove this wart,
neither does expand - so we start with two memcpys after RTL expansion.
This is definitively different from PR16405.
--
What |Removed |Added
----------------------------------------------------------------------------
CC| |rguenth at gcc dot gnu dot
| |org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=23372