modernc.org/ccgo/v3@v3.16.14/lib/testdata/gcc-9.1.0/gcc/testsuite/gcc.c-torture/execute/980526-1.c (about)

     1  /* { dg-require-effective-target label_values } */
     2  
     3  int expect_do1 = 1, expect_do2 = 2;
     4   
     5  static int doit(int x){
     6    __label__ lbl1;
     7    __label__ lbl2;
     8    static int jtab_init = 0;
     9    static void *jtab[2];
    10   
    11    if(!jtab_init) {
    12      jtab[0] = &&lbl1;
    13      jtab[1] = &&lbl2;
    14      jtab_init = 1;
    15    }
    16    goto *jtab[x];
    17  lbl1:
    18    return 1;
    19  lbl2:
    20    return 2;
    21  }
    22   
    23  static void do1(void) {
    24    if (doit(0) != expect_do1)
    25      abort ();
    26  }
    27   
    28  static void do2(void){
    29    if (doit(1) != expect_do2)
    30      abort ();
    31  }
    32   
    33  int main(void){
    34    exit(0);
    35  }