Bug 3948 - Two destructors are called when no copy destructor is defined
Bug#: 3948 Product:  gcc Version: 3.0
Host:  Target:  Build: 
Status: RESOLVED Severity: normal Priority: P3
Resolution: FIXED Assigned To: jason@gcc.gnu.org Reported By: ksingh@oz.agile.tv
Component: c++ Target Milestone: ---
Summary: Two destructors are called when no copy destructor is defined
Keywords:  wrong-code
Opened: 2001-08-05 21:06
Description:   Last confirmed: Opened: 2001-08-05 21:06
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 From ksingh@oz.agile.tv 2001-08-05 21:06 -------
Fix:
None

------- Comment #2 From Gabriel Dos Reis 2001-08-13 04:16 -------
Responsible-Changed-From-To: unassigned->gdr
Responsible-Changed-Why: Boo!

------- Comment #3 From Gabriel Dos Reis 2001-08-13 04:16 -------
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 From Jason Merrill 2002-03-17 16:22 -------
Responsible-Changed-From-To: gdr->jason
Responsible-Changed-Why: me

------- Comment #5 From Jason Merrill 2002-03-18 03:41 -------
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.