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
|
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
Responsible-Changed-From-To: unassigned->gdr
Responsible-Changed-Why: Boo!
State-Changed-From-To: open->analyzed
State-Changed-Why: Confirmed as a horrible bug in GCC-3.0. A regression over 2.95
Responsible-Changed-From-To: gdr->jason
Responsible-Changed-Why: me
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.