bug-gplusplus
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

g++ 2.95.1: Destructor not called properly


From: Niel Clausen
Subject: g++ 2.95.1: Destructor not called properly
Date: Thu, 24 May 2001 13:03:25 +0100

The following (legal?) code fails to call ~a() on a couple of gcc variants:


#include <stdio.h>

// define FAIL to cause incorrect code generation for ~b()
// #define FAIL

#ifdef FAIL
extern "C"
{
#endif

class a
{
public:
  a() {
   printf("a::a()\n");
  }

  virtual ~a() {
   printf("a::~a()\n");
  }
};

class b : public a
{
public:
  b() {
   printf("b::b()\n");
  }

  ~b() {
   printf("b::~b()\n");
  }
};

#ifdef FAIL
}
#endif


main()
{
a *ptr = new b;
delete ptr;
}





~/> g++ -v test.cpp -DFAIL
Reading specs from /usr/local/lib/gcc-lib/sparc-sun-solaris2.6/2.95.1/specs
gcc version 2.95.1 19990816 (release)

/usr/local/lib/gcc-lib/sparc-sun-solaris2.6/2.95.1/cpp -lang-c++ -v -D__GNUC
__=2 -D__GNUG__=2 -D__GNUC_MINOR__=95 -D__cplusplus -Dsparc -Dsun -Dunix -D_
_svr4__ -D__SVR4 -D__sparc__ -D__sun__ -D__unix__ -D__svr4__ -D__SVR4 -D__sp
arc -D__sun -D__unix -Asystem(unix) -Asystem(svr4) -D__EXCEPTIONS -D__GCC_NE
W_VARARGS__ -Acpu(sparc) -Amachine(sparc) -DFAIL test.cpp
/var/tmp/ccuXbJSX.ii
GNU CPP version 2.95.1 19990816 (release) (sparc)
#include "..." search starts here:
#include <...> search starts here:

/usr/local/lib/gcc-lib/sparc-sun-solaris2.6/2.95.1/../../../../include/g++-3
/usr/local/include

/usr/local/lib/gcc-lib/sparc-sun-solaris2.6/2.95.1/../../../../sparc-sun-sol
aris2.6/include
/usr/local/lib/gcc-lib/sparc-sun-solaris2.6/2.95.1/include
/usr/include
End of search list.
The following default directories have been omitted from the search path:
End of omitted list.
/usr/local/lib/gcc-lib/sparc-sun-solaris2.6/2.95.1/cc1plus
/var/tmp/ccuXbJSX.ii -quiet -dumpbase test.cc -version -o
/var/tmp/ccUZZ5dO.s
GNU C++ version 2.95.1 19990816 (release) (sparc-sun-solaris2.6) compiled by
GNU C version 2.95.1 19990816 (release).
/usr/local/sparc-sun-solaris2.6/bin/as -V -Qy -s -o /var/tmp/cco2EsxK.o
/var/tmp/ccUZZ5dO.s
GNU assembler version 2.9.4 (sparc-sun-solaris2.6) using BFD version 2.9.4
/usr/local/lib/gcc-lib/sparc-sun-solaris2.6/2.95.1/collect2 -V -Y
P,/usr/ccs/lib:/usr/lib -Qy
/usr/local/lib/gcc-lib/sparc-sun-solaris2.6/2.95.1/crt1.o
/usr/local/lib/gcc-lib/sparc-sun-solaris2.6/2.95.1/crti.o
/usr/ccs/lib/values-Xa.o
/usr/local/lib/gcc-lib/sparc-sun-solaris2.6/2.95.1/crtbegin.o -L/usr/local/l
ib/gcc-lib/sparc-sun-solaris2.6/2.95.1 -L/usr/local/sparc-sun-solaris2.6/lib
-L/usr/ccs/bin -L/usr/ccs/lib -L/usr/local/lib
/var/tmp/cco2EsxK.o -lstdc++ -lm -lgcc -lc -lgcc
/usr/local/lib/gcc-lib/sparc-sun-solaris2.6/2.95.1/crtend.o
/usr/local/lib/gcc-lib/sparc-sun-solaris2.6/2.95.1/crtn.o
GNU ld version 2.9.4 (with BFD 2.9.4)
  Supported emulations:
   elf32_sparc


~/> a.out
a::a()
b::b()
b::~b()








reply via email to

[Prev in Thread] Current Thread [Next in Thread]