1139749Simp// { dg-do run } 266703Sarchieint state; 366703Sarchieint fail; 466703Sarchie 566703Sarchieclass A { 666703Sarchiepublic: 766703Sarchie A() { 866703Sarchie if (++state != 1) 966703Sarchie fail = 1; 1066703Sarchie } 1166703Sarchie virtual int foo() { 1266703Sarchie if (++state != 2) 1366703Sarchie fail = 1; 1466703Sarchie return 0; 1566703Sarchie } 1666703Sarchie virtual ~A() { 1766703Sarchie if (++state != 3) 1866703Sarchie fail = 1; 1966703Sarchie } 2066703Sarchie}; 2166703Sarchie 2266703SarchieA* bar() { 2366703Sarchie return new A; 2466703Sarchie} 2566703Sarchie 2666703Sarchieint main() { 2766703Sarchie A *aptr = bar(); 2866703Sarchie aptr->foo(); 2966703Sarchie if (dynamic_cast <void*> (aptr) != aptr) 3066703Sarchie fail = 1; 3166703Sarchie delete aptr; 3266703Sarchie if (++state != 4) 3366703Sarchie fail = 1; 3466703Sarchie return fail; 3566703Sarchie} 3666703Sarchie