This is the mail archive of the
gcc-bugs@gcc.gnu.org
mailing list for the GCC project.
c++/3194: to many calls to copy ctor
- To: gcc-gnats at gcc dot gnu dot org
- Subject: c++/3194: to many calls to copy ctor
- From: pere at hungry dot com
- Date: 15 Jun 2001 12:50:08 -0000
- Reply-To: pere at hungry dot com
>Number: 3194
>Category: c++
>Synopsis: to many calls to copy ctor
>Confidential: no
>Severity: serious
>Priority: medium
>Responsible: unassigned
>State: open
>Class: pessimizes-code
>Submitter-Id: net
>Arrival-Date: Fri Jun 15 05:56:01 PDT 2001
>Closed-Date:
>Last-Modified:
>Originator: Petter Reinholdtsen
>Release: gcc 2.95.2 and 3.0 2001-06-15
>Organization:
>Environment:
Debian 2.2
>Description:
Given the following test program, gcc 2.95.2 behaves very different
with and without an explicit copy constructor.
Without With
------------------------------------------------
ctor default 0xbffff628 ctor default 0xbffff628
foo ctor 1 dtor 0 foo ctor 1 dtor 0
dtor default 0xbffff604 dtor default 0xbffff628
dtor default 0xbffff628 ctor temp 0xbffff628
ctor temp 0xbffff624 foo ctor 2 dtor 1
foo ctor 2 dtor 2 dtor temp 0xbffff628
dtor temp 0xbffff604 ctor live 0xbffff628
dtor temp 0xbffff624 cctor live 0xbffff624
ctor live 0xbffff620 foo ctor 4 dtor 2
foo ctor 3 dtor 4 dtor live 0xbffff624
dtor live 0xbffff604 dtor live 0xbffff628
dtor live 0xbffff61c
dtor live 0xbffff620
Notice how the default copy constructor is called even if it isn't
needed.
>How-To-Repeat:
Compile and run the enclosed test program.
>Fix:
>Release-Note:
>Audit-Trail:
>Unformatted:
----gnatsweb-attachment----
Content-Type: text/x-c++src; name="defaultparm.cpp"
Content-Transfer-Encoding: base64
Content-Disposition: attachment; filename="defaultparm.cpp"
LyoKCkdpdmVuIHRoZSBmb2xsb3dpbmcgdGVzdCBwcm9ncmFtLCBnY2MgMi45NS4yIGJlaGF2ZXMg
dmVyeSBkaWZmZXJlbnQKd2l0aCBhbmQgd2l0aG91dCBhIGNvcHkgY29uc3RydWN0b3IuCgogIFdp
dGhvdXQgICAgICAgICAgICAgICAgICBXaXRoCiAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgY3RvciBkZWZhdWx0IDB4YmZmZmY2MjggIGN0b3IgZGVm
YXVsdCAweGJmZmZmNjI4CiAgZm9vIGN0b3IgMSBkdG9yIDAgICAgICAgIGZvbyBjdG9yIDEgZHRv
ciAwCiAgZHRvciBkZWZhdWx0IDB4YmZmZmY2MDQgIGR0b3IgZGVmYXVsdCAweGJmZmZmNjI4CiAg
ZHRvciBkZWZhdWx0IDB4YmZmZmY2MjggIGN0b3IgdGVtcCAweGJmZmZmNjI4CiAgY3RvciB0ZW1w
IDB4YmZmZmY2MjQgICAgIGZvbyBjdG9yIDIgZHRvciAxCiAgZm9vIGN0b3IgMiBkdG9yIDIgICAg
ICAgIGR0b3IgdGVtcCAweGJmZmZmNjI4CiAgZHRvciB0ZW1wIDB4YmZmZmY2MDQgICAgIGN0b3Ig
bGl2ZSAweGJmZmZmNjI4CiAgZHRvciB0ZW1wIDB4YmZmZmY2MjQgICAgIGNjdG9yIGxpdmUgMHhi
ZmZmZjYyNAogIGN0b3IgbGl2ZSAweGJmZmZmNjIwICAgICBmb28gY3RvciA0IGR0b3IgMgogIGZv
byBjdG9yIDMgZHRvciA0ICAgICAgICBkdG9yIGxpdmUgMHhiZmZmZjYyNAogIGR0b3IgbGl2ZSAw
eGJmZmZmNjA0ICAgICBkdG9yIGxpdmUgMHhiZmZmZjYyOAogIGR0b3IgbGl2ZSAweGJmZmZmNjFj
CiAgZHRvciBsaXZlIDB4YmZmZmY2MjAKCk5vdGljZSBob3cgdGhlIGRlZmF1bHQgY29weSBjb25z
dHJ1Y3RvciBpcyBjYWxsZWQgZXZlbiBpZiBpdCBpc24ndApuZWVkZWQuCgoqLwoKI2luY2x1ZGUg
PHN0ZGlvLmg+CmNsYXNzIFRlc3QKewpwdWJsaWM6CiAgVGVzdChjb25zdCBjaGFyICpuYW1lKSA6
IG1fbmFtZShuYW1lKSB7IGN0b3IrKzsgcHJpbnQoImN0b3IiKTsgfTsKICAvLyBGbGlwIHRoaXMg
c3dpdGNoIHRvIGNoYW5nZSB0aGUgYmVoYXZvaXVyCiNpZiBub3RfdXNpbmdfZGVmYXVsdF9jb3B5
X2N0b3IKICBUZXN0KGNvbnN0IFRlc3QmIHQpIDogbV9uYW1lKHQubV9uYW1lKSB7IGN0b3IrKzsg
cHJpbnQoImNjdG9yIik7IH07CiNlbmRpZgogIH5UZXN0KCkgeyBkdG9yKys7IHByaW50KCJkdG9y
Iik7IH07CgogIHN0YXRpYyBpbnQgY3RvciwgZHRvcjsKcHJpdmF0ZToKICBjb25zdCBjaGFyICpt
X25hbWU7CiAgdm9pZCBwcmludChjb25zdCBjaGFyICpmdW5jKSB7IHByaW50ZigiJXMgJXMgJXBc
biIsIGZ1bmMsIG1fbmFtZSwgdGhpcyk7fTsKfTsKCmludCBUZXN0OjpjdG9yID0gMDsKaW50IFRl
c3Q6OmR0b3IgPSAwOwoKdm9pZApmb28oVGVzdCB0ID0gVGVzdCgiZGVmYXVsdCIpKQp7CiAgcHJp
bnRmKCJmb28gY3RvciAlZCBkdG9yICVkXG4iLCBUZXN0OjpjdG9yLCBUZXN0OjpkdG9yKTsKfQoK
aW50IG1haW4oKQp7CiAgZm9vKCk7CiAgZm9vKFRlc3QoInRlbXAiKSk7CgogIFRlc3QgdCgibGl2
ZSIpOwogIGZvbyh0KTsKICByZXR1cm4gMDsKfQo=