111
|
1 /* PR tree-optimization/59920 */
|
|
2 /* { dg-do compile } */
|
|
3 /* { dg-options "-O0" } */
|
|
4 /* { dg-require-effective-target label_values } */
|
|
5 /* { dg-require-effective-target indirect_jumps } */
|
|
6
|
|
7 void *bar (void **);
|
|
8 void *baz (int, void **);
|
|
9
|
|
10 #define A(n) \
|
|
11 { __label__ l1_##n, l2_##n, l3_##n; \
|
|
12 static void *a[] = { &&l1_##n, &&l2_##n, &&l3_##n };\
|
|
13 void *b = bar (a); \
|
|
14 goto *b; \
|
|
15 l1_##n: \
|
|
16 b = baz (1, a); \
|
|
17 goto *b; \
|
|
18 l2_##n: \
|
|
19 b = baz (2, a); \
|
|
20 goto *b; \
|
|
21 l3_##n:; \
|
|
22 }
|
|
23 #define B(n) A(n##0) A(n##1) A(n##2) A(n##3) A(n##4) \
|
|
24 A(n##5) A(n##6) A(n##7) A(n##8) A(n##9)
|
|
25 #define C(n) B(n##0) B(n##1) B(n##2) B(n##3) B(n##4) \
|
|
26 B(n##5) B(n##6) B(n##7) B(n##8) B(n##9)
|
|
27
|
|
28 void
|
|
29 foo (void)
|
|
30 {
|
|
31 C(1)
|
|
32 }
|