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 *);