2018-11-07 Richard Biener <rguenther@suse.de>
[official-gcc.git] / gcc / testsuite / g++.dg / torture / pr77745.C
blob6285bc14a43ba7bd9ab7387dc51588a352357ed9
1 // { dg-do run }
3 #ifndef NOINLINE
4 #define NOINLINE /* */
5 #endif
7 inline void* operator new(__SIZE_TYPE__, void* __p) noexcept { return __p; }
9 long NOINLINE foo(char *c1, char *c2)
11   long *p1 = new (c1) long;
12   *p1 = 100;
13   long long *p2 = new (c2) long long;
14   *p2 = 200;
15   long *p3 = new (c2) long;
16   *p3 = 200;
17   return *p1;
19 int main()
21   union {
22       char c;
23       long l;
24       long long ll;
25   } c;
26   if (foo(&c.c, &c.c) != 200)
27     __builtin_abort();