111
|
1 // { dg-options "-O3 -flifetime-dse" }
|
|
2 // { dg-do run }
|
145
|
3 // { dg-xfail-run-if "AIX operator new" { powerpc-ibm-aix* } }
|
111
|
4
|
|
5 typedef __SIZE_TYPE__ size_t;
|
|
6 inline void * operator new (size_t, void *p) { return p; }
|
|
7
|
|
8 struct A
|
|
9 {
|
|
10 int i;
|
|
11 A() {}
|
|
12 ~A() {}
|
|
13 };
|
|
14
|
|
15 int main()
|
|
16 {
|
|
17 int ar[1] = { 42 };
|
|
18 A* ap = new(ar) A;
|
|
19
|
|
20 // When the constructor starts the object has indeterminate value.
|
|
21 if (ap->i == 42) __builtin_abort();
|
|
22
|
|
23 ap->i = 42;
|
|
24 ap->~A();
|
|
25
|
|
26 // When the destructor ends the object no longer exists.
|
|
27 if (ar[0] == 42) __builtin_abort();
|
|
28 }
|