1 /* PR tree-optimization/29484 */ 2 3 extern void abort (void); 4 5 void *__attribute__((noinline)) baz(void ** lab)6baz (void **lab) 7 { 8 asm volatile ("" : "+r" (lab)); 9 return *lab; 10 } 11 12 static inline bar(void)13int bar (void) 14 { 15 static void *b[] = { &&addr }; 16 void *p = baz (b); 17 goto *p; 18 addr: 19 return 17; 20 } 21 22 int __attribute__((noinline)) f1(void)23f1 (void) 24 { 25 return bar (); 26 } 27 28 int __attribute__((noinline)) f2(void)29f2 (void) 30 { 31 return bar (); 32 } 33 34 int main(void)35main (void) 36 { 37 if (f1 () != 17 || f1 () != 17 || f2 () != 17 || f2 () != 17) 38 abort (); 39 return 0; 40 } 41