// { 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);
}
