1 /* { dg-do compile } */ 2 /* { dg-options "-O2 -mfunction-return=keep -mindirect-branch=thunk -fno-pic" } */ 3 4 void func0 (void); 5 void func1 (void); 6 void func2 (void); 7 void func3 (void); 8 void func4 (void); 9 void func4 (void); 10 void func5 (void); 11 12 __attribute__ ((indirect_branch("keep"))) 13 void bar(int i)14bar (int i) 15 { 16 switch (i) 17 { 18 default: 19 func0 (); 20 break; 21 case 1: 22 func1 (); 23 break; 24 case 2: 25 func2 (); 26 break; 27 case 3: 28 func3 (); 29 break; 30 case 4: 31 func4 (); 32 break; 33 case 5: 34 func5 (); 35 break; 36 } 37 } 38 39 /* { dg-final { scan-assembler-not "__x86_indirect_thunk" } } */ 40 /* { dg-final { scan-assembler-not {\t(lfence|pause)} } } */ 41 /* { dg-final { scan-assembler-not "jmp\[ \t\]*\.LIND" } } */ 42 /* { dg-final { scan-assembler-not "call\[ \t\]*\.LIND" } } */ 43