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 
doit(void ** pptr,int cond)10 static __inline__ void doit(void **pptr, int cond)
11 {
12   if (cond) {
13   here:
14     *pptr = &&here;
15   }
16 }
17 
18 __attribute__ ((noinline))
f(int cond)19 static void f(int cond)
20 {
21   doit (&ptr1, cond);
22 }
23 
24 __attribute__ ((noinline))
g(int cond)25 static void g(int cond)
26 {
27   doit (&ptr2, cond);
28 }
29 
30 __attribute__ ((noinline))
31 static void bar(void);
32 
main()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 
bar(void)47 void bar(void) { }
48