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

     1  /* PR tree-optimization/29484 */
     2  /* { dg-require-effective-target label_values } */
     3  /* { dg-require-effective-target indirect_jumps } */
     4  
     5  extern void abort (void);
     6  
     7  void *__attribute__((noinline))
     8  baz (void **lab)
     9  {
    10    asm volatile ("" : "+r" (lab));
    11    return *lab;
    12  }
    13  
    14  static inline
    15  int bar (void)
    16  {
    17    static void *b[] = { &&addr };
    18    void *p = baz (b);
    19    goto *p;
    20  addr:
    21    return 17;
    22  }
    23  
    24  int __attribute__((noinline))
    25  f1 (void)
    26  {
    27    return bar ();
    28  }
    29  
    30  int __attribute__((noinline))
    31  f2 (void)
    32  {
    33    return bar ();
    34  }
    35  
    36  int
    37  main (void)
    38  {
    39    if (f1 () != 17 || f1 () != 17 || f2 () != 17 || f2 () != 17)
    40      abort ();
    41    return 0;
    42  }