/* { dg-do run } */ extern "C" void abort (void); struct S { unsigned int i : 24; } x; void __attribute__((noinline)) test1() { if (--x.i != 0x00ffffff) abort (); if (x.i != 0x00ffffff) abort (); } void __attribute__((noinline)) test2() { if (x.i-- != 0) abort (); if (x.i != 0x00ffffff) abort (); } void __attribute__((noinline)) test3() { if (++x.i != 0) abort (); if (x.i != 0) abort (); } void __attribute__((noinline)) test4() { if (x.i++ != 0x00ffffff) abort (); if (x.i != 0) abort (); } int main() { x.i = 0; test1(); x.i = 0; test2(); x.i = 0x00ffffff; test3(); x.i = 0x00ffffff; test4(); return 0; }