1 /* { dg-skip-if "Array too big" { "pdp11-*-*" } { "-mint32" } } */
2 
3 /* { dg-require-effective-target int32plus } */
4 /* Inspired by the test case for PR middle-end/52640.  */
5 
6 typedef struct
7 {
8     char *value;
9 } REFERENCE;
10 
11 /* Add a few "extern int Xxxxxx ();" declarations.  */
12 #undef DEF
13 #undef LIM1
14 #undef LIM2
15 #undef LIM3
16 #undef LIM4
17 #undef LIM5
18 #undef LIM6
19 #define DEF(x) 	extern int x ()
20 #define LIM1(x) DEF(x##0); DEF(x##1); DEF(x##2); DEF(x##3); DEF(x##4); \
21 		DEF(x##5); DEF(x##6); DEF(x##7); DEF(x##8); DEF(x##9);
22 #define LIM2(x) LIM1(x##0) LIM1(x##1) LIM1(x##2) LIM1(x##3) LIM1(x##4) \
23 		LIM1(x##5) LIM1(x##6) LIM1(x##7) LIM1(x##8) LIM1(x##9)
24 #define LIM3(x) LIM2(x##0) LIM2(x##1) LIM2(x##2) LIM2(x##3) LIM2(x##4) \
25 		LIM2(x##5) LIM2(x##6) LIM2(x##7) LIM2(x##8) LIM2(x##9)
26 #define LIM4(x) LIM3(x##0) LIM3(x##1) LIM3(x##2) LIM3(x##3) LIM3(x##4) \
27 		LIM3(x##5) LIM3(x##6) LIM3(x##7) LIM3(x##8) LIM3(x##9)
28 #define LIM5(x) LIM4(x##0) LIM4(x##1) LIM4(x##2) LIM4(x##3) LIM4(x##4) \
29 		LIM4(x##5) LIM4(x##6) LIM4(x##7) LIM4(x##8) LIM4(x##9)
30 #define LIM6(x) LIM5(x##0) LIM5(x##1) LIM5(x##2) LIM5(x##3) LIM5(x##4) \
31 		LIM5(x##5) LIM5(x##6) LIM5(x##7) LIM5(x##8) LIM5(x##9)
32 LIM5 (X);
33 
34 /* Add references to them, or GCC will simply ignore the extern decls.  */
35 #undef DEF
36 #undef LIM1
37 #undef LIM2
38 #undef LIM3
39 #undef LIM4
40 #undef LIM5
41 #undef LIM6
42 #define DEF(x)	(char *) x
43 #define LIM1(x) DEF(x##0), DEF(x##1), DEF(x##2), DEF(x##3), DEF(x##4), \
44 		DEF(x##5), DEF(x##6), DEF(x##7), DEF(x##8), DEF(x##9),
45 #define LIM2(x) LIM1(x##0) LIM1(x##1) LIM1(x##2) LIM1(x##3) LIM1(x##4) \
46 		LIM1(x##5) LIM1(x##6) LIM1(x##7) LIM1(x##8) LIM1(x##9)
47 #define LIM3(x) LIM2(x##0) LIM2(x##1) LIM2(x##2) LIM2(x##3) LIM2(x##4) \
48 		LIM2(x##5) LIM2(x##6) LIM2(x##7) LIM2(x##8) LIM2(x##9)
49 #define LIM4(x) LIM3(x##0) LIM3(x##1) LIM3(x##2) LIM3(x##3) LIM3(x##4) \
50 		LIM3(x##5) LIM3(x##6) LIM3(x##7) LIM3(x##8) LIM3(x##9)
51 #define LIM5(x) LIM4(x##0) LIM4(x##1) LIM4(x##2) LIM4(x##3) LIM4(x##4) \
52 		LIM4(x##5) LIM4(x##6) LIM4(x##7) LIM4(x##8) LIM4(x##9)
53 #define LIM6(x) LIM5(x##0) LIM5(x##1) LIM5(x##2) LIM5(x##3) LIM5(x##4) \
54 		LIM5(x##5) LIM5(x##6) LIM5(x##7) LIM5(x##8) LIM5(x##9)
55 REFERENCE references[] = {
56   LIM5 (X)
57   0
58 };
59