From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 8627 invoked by alias); 13 Aug 2005 18:11:28 -0000 Mailing-List: contact gcc-bugs-help@gcc.gnu.org; run by ezmlm Precedence: bulk List-Archive: List-Post: List-Help: Sender: gcc-bugs-owner@gcc.gnu.org Received: (qmail 8611 invoked by uid 48); 13 Aug 2005 18:11:24 -0000 Date: Sat, 13 Aug 2005 18:11:00 -0000 Message-ID: <20050813181124.8610.qmail@sourceware.org> From: "rguenth at tat dot physik dot uni-tuebingen dot de" To: gcc-bugs@gcc.gnu.org In-Reply-To: <20050813080257.23372.guillaume.melquiond@ens-lyon.fr> References: <20050813080257.23372.guillaume.melquiond@ens-lyon.fr> Reply-To: gcc-bugzilla@gcc.gnu.org Subject: [Bug c++/23372] [4.0/4.1 Regression] Temporary aggregate copy not elided when passing parameters by value X-Bugzilla-Reason: CC X-SW-Source: 2005-08/txt/msg01514.txt.bz2 List-Id: ------- Additional Comments From rguenth at tat dot physik dot uni-tuebingen dot de 2005-08-13 18:11 ------- With the copy ctor we end up with void g(A*) (a) { struct A D.1603; : __comp_ctor (&D.1603, a); f (&D.1603); return; } which confuses me a bit, because here the prototype of f looks like effectively void f(A*); do we use ABI information here, but not in the other case? The C++ frontend in this case presents us with { < D.1603 >>> >) >>> >>; } where in the case w/o the copy ctor we have <>) >>> >>; is there some different wording about by-value parameter passing with or without explicit copy ctor in the C++ standard?! I.e., why isn't the above <>) >>> >>; ? -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=23372