| // { dg-do run } | |
| void *operator new(__SIZE_TYPE__, void *p2) { return p2; } | |
| struct B { B(int i_) : i(i_) {} int i; }; | |
| struct X | |
| { | |
| unsigned char buf[sizeof (B)]; | |
| }; | |
| int __attribute__((noinline)) foo() | |
| { | |
| X x alignas(B), y alignas(B); | |
| new (&x) B (0); | |
| y = x; | |
| B *q = reinterpret_cast <B *>(&y); | |
| asm volatile ("" : "=r" (q) : "0" (q)); | |
| return q->i; | |
| } | |
| int main() | |
| { | |
| if (foo() != 0) | |
| __builtin_abort (); | |
| return 0; | |
| } |