* gcc-interface/trans.c (node_has_volatile_full_access) <N_Identifier>:
[official-gcc.git] / gcc / testsuite / gcc.misc-tests / bprob-2.c
blob90ed7d74b8c19adce8932ed577fb51780594e1c4
1 /* { dg-require-effective-target label_values } */
3 /* Test profile-directed block ordering with computed gotos.
5 This is the same as test gcc.c-torture/execute/980526-1.c and
6 gcc.misc-tests/gcov-3.c */
8 extern void abort (void);
9 extern void exit (int);
11 int expect_do1 = 1, expect_do2 = 2;
13 static int doit(int x){
14 __label__ lbl1;
15 __label__ lbl2;
16 static int jtab_init = 0;
17 static void *jtab[2];
19 if(!jtab_init) {
20 jtab[0] = &&lbl1;
21 jtab[1] = &&lbl2;
22 jtab_init = 1;
24 goto *jtab[x];
25 lbl1:
26 return 1;
27 lbl2:
28 return 2;
31 static void do1(void) {
32 if (doit(0) != expect_do1)
33 abort ();
36 static void do2(void){
37 if (doit(1) != expect_do2)
38 abort ();
41 int main(void){
42 do1();
43 do2();
44 exit(0);