(root)/
gcc-13.2.0/
gcc/
testsuite/
gcc.c-torture/
execute/
20071220-1.c
       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  }