Bug 3948 - Two destructors are called when no copy destructor is defined
Summary: Two destructors are called when no copy destructor is defined
Status: RESOLVED FIXED
Alias: None
Product: gcc
Classification: Unclassified
Component: c++ (show other bugs)
Version: 3.0
: P3 normal
Target Milestone: ---
Assignee: Jason Merrill
URL:
Keywords: wrong-code
Depends on:
Blocks:
 
Reported: 2001-08-05 21:06 UTC by ksingh
Modified: 2003-07-25 17:33 UTC (History)
2 users (show)

See Also:
Host:
Target:
Build:
Known to work:
Known to fail:
Last reconfirmed:


Attachments
kulvinder.C (230 bytes, application/octet-stream)
2003-05-21 15:16 UTC, ksingh
Details

Note You need to log in before you can comment on or make changes to this bug.
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.