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