1/* { dg-do run } */
2
3extern "C" void abort (void);
4struct S { unsigned int i : 24; } x;
5void __attribute__((noinline)) test1()
6{
7  if (--x.i != 0x00ffffff)
8    abort ();
9  if (x.i != 0x00ffffff)
10    abort ();
11}
12void __attribute__((noinline)) test2()
13{
14  if (x.i-- != 0)
15    abort ();
16  if (x.i != 0x00ffffff)
17    abort ();
18}
19void __attribute__((noinline)) test3()
20{
21  if (++x.i != 0)
22    abort ();
23  if (x.i != 0)
24    abort ();
25}
26void __attribute__((noinline)) test4()
27{
28  if (x.i++ != 0x00ffffff)
29    abort ();
30  if (x.i != 0)
31    abort ();
32}
33int main()
34{
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;
44}
45