2018-11-07 Richard Biener <rguenther@suse.de>
[official-gcc.git] / gcc / testsuite / g++.dg / opt / pr15054.C
blobcfc48cf2498946d2d1bdf053b9bcce5996e40c36
1 // PR middle-end/15054
2 // This used to abort due to overlapping stack temporaries.
4 // { dg-do run }
5 // { dg-options "-O" }
7 extern "C" void abort (void);
9 struct pointer
11   void* ptr;
13   pointer(void* x = 0) : ptr(x) {}
14   pointer(const pointer& x) : ptr(x.ptr) {}
17 struct element
19   int canary;
21   element() : canary(123) { }
22   ~element() { pointer(); if (canary != 123) abort (); }
25 inline pointer
26 insert(const element& x)
28   return pointer(new element(x));
31 int
32 main (void)
34   insert(element());
35   return 0;