2018-11-07 Richard Biener <rguenther@suse.de>
[official-gcc.git] / gcc / testsuite / g++.dg / torture / pr79671.C
blobd3c6f9bfb160ab9a0a09c23b22f845c8afdc993e
1 // { dg-do run }
3 void *operator new(__SIZE_TYPE__, void *p2) { return p2; }
4 struct B { B(int i_) : i(i_) {} int i; };
5 struct X
7   unsigned char buf[sizeof (B)];
8 };
10 int __attribute__((noinline)) foo()
12   X x alignas(B), y alignas(B);
13   new (&x) B (0);
14   y = x;
15   B *q = reinterpret_cast <B *>(&y);
16   asm volatile ("" : "=r" (q) : "0" (q));
17   return q->i;
20 int main()
22   if (foo() != 0)
23     __builtin_abort ();
24   return 0;