| // { dg-additional-options "-Wno-return-type" } | |
| void* operator new(__SIZE_TYPE__, void* __p) {} | |
| struct auto_ptr { | |
| int* p; | |
| ~auto_ptr() { delete p; } | |
| }; | |
| typedef void* T; | |
| struct vector { | |
| void push_back(const T& __x) { | |
| ::new(0) T(__x); | |
| insert(__x); | |
| } | |
| void insert(const T& __x); | |
| } v; | |
| void g(); | |
| void f() { | |
| auto_ptr ap; | |
| if (ap.p) { | |
| ap.p = new int(); | |
| } | |
| g(); | |
| int* tmp = ap.p; | |
| ap.p = 0; | |
| v.push_back(tmp); | |
| } |