2018-11-07 Richard Biener <rguenther@suse.de>
[official-gcc.git] / gcc / testsuite / g++.dg / torture / pr33887-1.C
blob2f17d9583268fb59ec0fdff936a1a99d03ec10f2
1 /* { dg-do run } */
3 extern "C" void abort (void);
4 struct S { unsigned int i : 24; } x;
5 void __attribute__((noinline)) test1()
7   if (--x.i != 0x00ffffff)
8     abort ();
9   if (x.i != 0x00ffffff)
10     abort ();
12 void __attribute__((noinline)) test2()
14   if (x.i-- != 0)
15     abort ();
16   if (x.i != 0x00ffffff)
17     abort ();
19 void __attribute__((noinline)) test3()
21   if (++x.i != 0)
22     abort ();
23   if (x.i != 0)
24     abort ();
26 void __attribute__((noinline)) test4()
28   if (x.i++ != 0x00ffffff)
29     abort ();
30   if (x.i != 0)
31     abort ();
33 int main()
35   x.i = 0;
36   test1();
37   x.i = 0;
38   test2();
39   x.i = 0x00ffffff;
40   test3();
41   x.i = 0x00ffffff;
42   test4();
43   return 0;