------- Comment #2 from reichelt at gcc dot gnu dot org  2009-05-15 22:53 
-------
Confirmed. Reduced testcase (crahses already with "-O"):

===================================================
struct A
{
  void foo(int*, int);
};

struct B
{
  B();
  ~B() { A().foo(p, q - p); }

  int *p, *q;
};

struct C : B
{
  C() { bar(); }
  ~C() { baz(bar(), bar()); }
  int bar();
  void baz(int, int);
};

struct D
{
  D(C*);
  ~D() { try { delete p; } catch (...) {} }
  C* operator->() { delete p; return 0; }

  C* p;
};

struct E
{
  E() : d(new C) { d->baz(d->bar(), d->bar()); }

  D d;
};

struct F
{
  F();
  virtual ~F();

  E e1, e2, e3;
};

F::F() {}
F::~F() {}
===================================================


-- 

reichelt at gcc dot gnu dot org changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
                 CC|                            |reichelt at gcc dot gnu dot
                   |                            |org
             Status|UNCONFIRMED                 |NEW
     Ever Confirmed|0                           |1
   Last reconfirmed|0000-00-00 00:00:00         |2009-05-15 22:53:07
               date|                            |


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=40163

Reply via email to