* gcc.target/powerpc/builtins-1-be.c <vclzb>: Rename duplicate test
[official-gcc.git] / gcc / testsuite / gcc.target / powerpc / safe-indirect-jump-6.c
blob1468a4ee20ded24c628e9482f77c2041336213b3
1 /* { dg-do run } */
2 /* { dg-additional-options "-mno-speculate-indirect-jumps" } */
3 /* { dg-warning "'-mno-speculate-indirect-jumps' is deprecated" "" { target *-*-* } 0 } */
5 /* Test for deliberate misprediction of jump tables. */
7 void __attribute__((noinline)) bar ()
11 int foo (int x)
13 int a;
15 switch (x)
17 default:
18 a = -1;
19 break;
20 case 0:
21 a = x * x + 3;
22 break;
23 case 1:
24 a = x + 1;
25 break;
26 case 2:
27 a = x + x;
28 break;
29 case 3:
30 a = x << 3;
31 break;
32 case 4:
33 a = x >> 1;
34 break;
35 case 5:
36 a = x;
37 break;
38 case 6:
39 a = 0;
40 break;
41 case 7:
42 a = x * x + x;
43 break;
46 bar();
48 return a;
51 int main ()
53 if (foo (0) != 3)
54 __builtin_abort ();
56 if (foo (1) != 2)
57 __builtin_abort ();
59 if (foo (2) != 4)
60 __builtin_abort ();
62 if (foo (3) != 24)
63 __builtin_abort ();
65 if (foo (4) != 2)
66 __builtin_abort ();
68 if (foo (5) != 5)
69 __builtin_abort ();
71 if (foo (6) != 0)
72 __builtin_abort ();
74 if (foo (7) != 56)
75 __builtin_abort ();
77 if (foo (8) != -1)
78 __builtin_abort ();
80 return 0;