OSDN Git Service

gcc/testsuite:
[pf3gnuchains/gcc-fork.git] / gcc / testsuite / gcc.c-torture / execute / 20071220-1.c
1 /* PR tree-optimization/29484 */
2
3 extern void abort (void);
4
5 void *__attribute__((noinline))
6 baz (void **lab)
7 {
8   asm volatile ("" : "+r" (lab));
9   return *lab;
10 }
11
12 static inline
13 int bar (void)
14 {
15   static void *b[] = { &&addr };
16   void *p = baz (b);
17   goto *p;
18 addr:
19   return 17;
20 }
21
22 int __attribute__((noinline))
23 f1 (void)
24 {
25   return bar ();
26 }
27
28 int __attribute__((noinline))
29 f2 (void)
30 {
31   return bar ();
32 }
33
34 int
35 main (void)
36 {
37   if (f1 () != 17 || f1 () != 17 || f2 () != 17 || f2 () != 17)
38     abort ();
39   return 0;
40 }