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

     1  /* { dg-require-effective-target label_values } */
     2  
     3  /* As a quality of implementation issue, we should not prevent inlining
     4     of function explicitly marked inline just because a label therein had
     5     its address taken.  */
     6  
     7  static void *ptr1, *ptr2;
     8  static int i = 1;
     9  
    10  static __inline__ void doit(void **pptr, int cond)
    11  {
    12    if (cond) {
    13    here:
    14      *pptr = &&here;
    15    }
    16  }
    17  
    18  __attribute__ ((noinline))
    19  static void f(int cond)
    20  {
    21    doit (&ptr1, cond);
    22  }
    23  
    24  __attribute__ ((noinline))
    25  static void g(int cond)
    26  {
    27    doit (&ptr2, cond);
    28  }
    29  
    30  __attribute__ ((noinline))
    31  static void bar(void);
    32  
    33  int main()
    34  {
    35    f (i);
    36    bar();
    37    g (i);
    38  
    39  #ifdef  __OPTIMIZE__
    40    if (ptr1 == ptr2)
    41      abort ();
    42  #endif
    43  
    44    exit (0);
    45  }
    46  
    47  void bar(void) { }