Fix unused warnings.
[official-gcc/graphite-test-results.git] / gcc / testsuite / gcc.c-torture / execute / multi-ix.c
blob377f08c115cb918db47988ee9687e5196e8261bb
1 /* Test for a reload bug:
2 if you have a memory reference using the indexed addressing
3 mode, and the base address is a pseudo containing an address in the frame
4 and this pseudo fails to get a hard register, we end up with a double PLUS,
5 so the frame address gets reloaded. Now, when the index got a hard register,
6 and it dies in this insn, push_reload will consider that hard register as
7 a reload register, and disregrad overlaps with rld[n_reloads].in . That is
8 fine as long as the add can be done with a single insn, but when the
9 constant is so large that it has to be reloaded into a register first,
10 that clobbers the index. */
12 #include <stdarg.h>
14 #ifdef STACK_SIZE
15 /* We need to be careful that we don't blow our stack. Function f, in the
16 worst case, needs to fit on the stack:
18 * 40 int[CHUNK] arrays;
19 * ~40 ints;
20 * ~40 pointers for stdarg passing.
22 Subtract the last two off STACK_SIZE and figure out what the maximum
23 chunk size can be. We make the last bit conservative to account for
24 register saves and other processor-dependent saving. Limit the
25 chunk size to some sane values. */
27 #define MIN(X,Y) ((X) < (Y) ? (X) : (Y))
28 #define MAX(X,Y) ((X) > (Y) ? (X) : (Y))
30 #define CHUNK \
31 MIN (500, (MAX (1, (signed)(STACK_SIZE-40*sizeof(int)-256*sizeof(void *)) \
32 / (signed)(40*sizeof(int)))))
33 #else
34 #define CHUNK 500
35 #endif
37 void s(int, ...);
38 void z(int, ...);
39 void c(int, ...);
41 typedef int l[CHUNK];
43 void
44 f (int n)
46 int i;
47 l a0, a1, a2, a3, a4, a5, a6, a7, a8, a9;
48 l a10, a11, a12, a13, a14, a15, a16, a17, a18, a19;
49 l a20, a21, a22, a23, a24, a25, a26, a27, a28, a29;
50 l a30, a31, a32, a33, a34, a35, a36, a37, a38, a39;
51 int i0, i1, i2, i3, i4, i5, i6, i7, i8, i9;
52 int i10, i11, i12, i13, i14, i15, i16, i17, i18, i19;
53 int i20, i21, i22, i23, i24, i25, i26, i27, i28, i29;
54 int i30, i31, i32, i33, i34, i35, i36, i37, i38, i39;
56 for (i = 0; i < n; i++)
58 s (40, a0, a1, a2, a3, a4, a5, a6, a7, a8, a9,
59 a10, a11, a12, a13, a14, a15, a16, a17, a18, a19,
60 a20, a21, a22, a23, a24, a25, a26, a27, a28, a29,
61 a30, a31, a32, a33, a34, a35, a36, a37, a38, a39);
62 i0 = a0[0];
63 i1 = a1[0];
64 i2 = a2[0];
65 i3 = a3[0];
66 i4 = a4[0];
67 i5 = a5[0];
68 i6 = a6[0];
69 i7 = a7[0];
70 i8 = a8[0];
71 i9 = a9[0];
72 i10 = a10[0];
73 i11 = a11[0];
74 i12 = a12[0];
75 i13 = a13[0];
76 i14 = a14[0];
77 i15 = a15[0];
78 i16 = a16[0];
79 i17 = a17[0];
80 i18 = a18[0];
81 i19 = a19[0];
82 i20 = a20[0];
83 i21 = a21[0];
84 i22 = a22[0];
85 i23 = a23[0];
86 i24 = a24[0];
87 i25 = a25[0];
88 i26 = a26[0];
89 i27 = a27[0];
90 i28 = a28[0];
91 i29 = a29[0];
92 i30 = a30[0];
93 i31 = a31[0];
94 i32 = a32[0];
95 i33 = a33[0];
96 i34 = a34[0];
97 i35 = a35[0];
98 i36 = a36[0];
99 i37 = a37[0];
100 i38 = a38[0];
101 i39 = a39[0];
102 z (40, a0, a1, a2, a3, a4, a5, a6, a7, a8, a9,
103 a10, a11, a12, a13, a14, a15, a16, a17, a18, a19,
104 a20, a21, a22, a23, a24, a25, a26, a27, a28, a29,
105 a30, a31, a32, a33, a34, a35, a36, a37, a38, a39);
106 a0[i0] = i0;
107 a1[i1] = i1;
108 a2[i2] = i2;
109 a3[i3] = i3;
110 a4[i4] = i4;
111 a5[i5] = i5;
112 a6[i6] = i6;
113 a7[i7] = i7;
114 a8[i8] = i8;
115 a9[i9] = i9;
116 a10[i10] = i10;
117 a11[i11] = i11;
118 a12[i12] = i12;
119 a13[i13] = i13;
120 a14[i14] = i14;
121 a15[i15] = i15;
122 a16[i16] = i16;
123 a17[i17] = i17;
124 a18[i18] = i18;
125 a19[i19] = i19;
126 a20[i20] = i20;
127 a21[i21] = i21;
128 a22[i22] = i22;
129 a23[i23] = i23;
130 a24[i24] = i24;
131 a25[i25] = i25;
132 a26[i26] = i26;
133 a27[i27] = i27;
134 a28[i28] = i28;
135 a29[i29] = i29;
136 a30[i30] = i30;
137 a31[i31] = i31;
138 a32[i32] = i32;
139 a33[i33] = i33;
140 a34[i34] = i34;
141 a35[i35] = i35;
142 a36[i36] = i36;
143 a37[i37] = i37;
144 a38[i38] = i38;
145 a39[i39] = i39;
146 c (40, a0, a1, a2, a3, a4, a5, a6, a7, a8, a9,
147 a10, a11, a12, a13, a14, a15, a16, a17, a18, a19,
148 a20, a21, a22, a23, a24, a25, a26, a27, a28, a29,
149 a30, a31, a32, a33, a34, a35, a36, a37, a38, a39);
154 main ()
156 /* CHUNK needs to be at least 40 to avoid stack corruption,
157 since index variable i0 in "a[i0] = i0" equals 39. */
158 if (CHUNK < 40)
159 exit (0);
161 f (1);
162 exit (0);
165 void s(int n, ...)
167 va_list list;
169 va_start (list, n);
170 while (n--)
172 int *a = va_arg (list, int *);
173 a[0] = n;
175 va_end (list);
178 void z(int n, ...)
180 va_list list;
182 va_start (list, n);
183 while (n--)
185 int *a = va_arg (list, int *);
186 __builtin_memset (a, 0, sizeof (l));
188 va_end (list);
191 void c(int n, ...)
193 va_list list;
195 va_start (list, n);
196 while (n--)
198 int *a = va_arg (list, int *);
199 if (a[n] != n)
200 abort ();
202 va_end (list);