2003-12-26 Guilhem Lavaux <guilhem@kaffe.org>
[official-gcc.git] / gcc / testsuite / gcc.c-torture / execute / 990208-1.c
blob786e664f35b8495b31d3ba7e6bded935f0e2c2cf
1 /* As a quality of implementation issue, we should not prevent inlining
2 of function explicitly marked inline just because a label therein had
3 its address taken. */
5 #ifndef NO_LABEL_VALUES
6 static void *ptr1, *ptr2;
7 static int i = 1;
9 static __inline__ void doit(void **pptr, int cond)
11 if (cond) {
12 here:
13 *pptr = &&here;
17 __attribute__ ((noinline))
18 static void f(int cond)
20 doit (&ptr1, cond);
23 __attribute__ ((noinline))
24 static void g(int cond)
26 doit (&ptr2, cond);
29 __attribute__ ((noinline))
30 static void bar(void);
32 int main()
34 f (i);
35 bar();
36 g (i);
38 #ifdef __OPTIMIZE__
39 if (ptr1 == ptr2)
40 abort ();
41 #endif
43 exit (0);
46 void bar(void) { }
48 #else /* NO_LABEL_VALUES */
49 int main() { exit(0); }
50 #endif