1// { dg-do run } 2// PRMS Id: 5286 3// Bug: g++ forgets side-effects of object in call to nonexistent destructor. 4 5#include <new> 6 7int r; 8 9template <class T> struct A { 10 T *p; 11 int i; 12 A() { i = 0; p = (T*) new char[sizeof (T)]; new (p + i++) T; } 13 ~A() { p[--i].~T(); r = i; } 14}; 15 16int main() 17{ 18 { A<int> a; } 19 20 int* p = (int*) new char[sizeof (int)]; 21 new (p + r++) int; 22 typedef int I; 23 p[--r].~I(); 24 25 return r; 26} 27