Bug 3948

Summary: Two destructors are called when no copy destructor is defined
Product: gcc Reporter: ksingh
Component: c++Assignee: Jason Merrill <jason>
Status: RESOLVED FIXED    
Severity: normal CC: gcc-bugs, gdr
Priority: P3 Keywords: wrong-code
Version: 3.0   
Target Milestone: ---   
Host: Target:
Build: Known to work:
Known to fail: Last reconfirmed:
Attachments: kulvinder.C

Description ksingh 2001-08-05 21:06:01 UTC
Quote from Nathan Sidwell

in main, we copy construct two C objects during the call to Foo.
Foo gets one of these by value, which is dtor'd in Foo. upon return
we dtor the other one. I think this is a problem with the pass-by-value
ABI method. It does look like a bug.

End Quote

Release:
GCC-3.0

Environment:
Reading specs from /usr/local/lib/gcc-lib/i686-pc-linux-gnu/3.0/specs
Configured with: ../configure
Thread model: single
gcc version 3.0

How-To-Repeat:
Compile and run the attached program
Comment 1 ksingh 2001-08-05 21:06:01 UTC
Fix:
None
Comment 2 Gabriel Dos Reis 2001-08-13 04:16:09 UTC
Responsible-Changed-From-To: unassigned->gdr
Responsible-Changed-Why: Boo!
Comment 3 Gabriel Dos Reis 2001-08-13 04:16:09 UTC
State-Changed-From-To: open->analyzed
State-Changed-Why: Confirmed as a horrible bug in GCC-3.0. A regression over 2.95
Comment 4 Jason Merrill 2002-03-17 16:22:44 UTC
Responsible-Changed-From-To: gdr->jason
Responsible-Changed-Why: me
Comment 5 Jason Merrill 2002-03-18 03:41:50 UTC
State-Changed-From-To: analyzed->closed
State-Changed-Why: Fixed for 3.1 by
    
            PR c++/3948 -- C++ ABI change, followup to 2001-12-18 patch.
            * class.c (finish_struct_bits): Also set TREE_ADDRESSABLE for a
            type with a nontrivial destructor.