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) { }