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. */
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;
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))
31 MIN (500, (MAX (1, (signed)(STACK_SIZE-40*sizeof(int)-256*sizeof(void *)) \
32 / (signed)(40*sizeof(int)))))
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);
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);
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);
156 /* CHUNK needs to be at least 40 to avoid stack corruption,
157 since index variable i0 in "a[i0] = i0" equals 39. */
172 int *a = va_arg (list, int *);
185 int *a = va_arg (list, int *);
186 __builtin_memset (a, 0, sizeof (l));
198 int *a = va_arg (list, int *);