1 /* { dg-require-effective-target indirect_jumps } */ 2 /* { dg-require-effective-target label_values } */ 3 /* { dg-skip-if "label differences not supported" { avr-*-* } } */ 4 5 /* PR rtl-optimization/70460 */ 6 7 int c; 8 9 __attribute__((noinline, noclone)) void foo(int x)10foo (int x) 11 { 12 static int b[] = { &&lab1 - &&lab0, &&lab2 - &&lab0 }; 13 void *a = &&lab0 + b[x]; 14 goto *a; 15 lab1: 16 c += 2; 17 lab2: 18 c++; 19 lab0: 20 ; 21 } 22 23 int main()24main () 25 { 26 foo (0); 27 if (c != 3) 28 __builtin_abort (); 29 foo (1); 30 if (c != 4) 31 __builtin_abort (); 32 return 0; 33 } 34