1 /* PR rtl-optimization/88904 */ 2 3 volatile int v; 4 5 __attribute__((noipa)) void bar(const char * x,const char * y,int z)6bar (const char *x, const char *y, int z) 7 { 8 if (!v) 9 __builtin_abort (); 10 asm volatile ("" : "+g" (x)); 11 asm volatile ("" : "+g" (y)); 12 asm volatile ("" : "+g" (z)); 13 } 14 15 #define my_assert(e) ((e) ? (void) 0 : bar (#e, __FILE__, __LINE__)) 16 17 typedef struct { 18 unsigned M1; 19 unsigned M2 : 1; 20 int : 0; 21 unsigned M3 : 1; 22 } S; 23 24 S foo()25foo () 26 { 27 S result = {0, 0, 1}; 28 return result; 29 } 30 31 int main()32main () 33 { 34 S ret = foo (); 35 my_assert (ret.M2 == 0); 36 my_assert (ret.M3 == 1); 37 return 0; 38 } 39