multi-ix.c: Limit CHUNK size between 1 and 500.

* gcc.c-torture/execute/multi-ix.c: Limit CHUNK size between 1 and 500.
        (main): Exit early for CHUNK less than 40 to avoid stack corruption.

From-SVN: r133648
This commit is contained in:
Uros Bizjak 2008-03-27 18:49:43 +01:00
parent ffd837fe16
commit 75f8beae97
2 changed files with 21 additions and 4 deletions

View File

@ -1,3 +1,8 @@
2008-03-26 Uros Bizjak <ubizjak@gmail.com>
* gcc.c-torture/execute/multi-ix.c: Limit CHUNK size between 1 and 500.
(main): Exit early for CHUNK less than 40 to avoid stack corruption.
2008-03-27 Richard Guenther <rguenther@suse.de>
PR c/32511
@ -10,7 +15,7 @@
2008-03-27 Douglas Gregor <doug.gregor@gmail.com>
* g++.dg/cpp0x/variadic91.C: New.
* g++.dg/cpp0x/variadic91.C: New.
2008-03-27 Zdenek Dvorak <ook@ucw.cz>
@ -37,7 +42,7 @@
2008-03-26 Richard Guenther <rguenther@suse.de>
Revert
Revert:
2008-03-26 Richard Guenther <rguenther@suse.de>
* gcc.dg/fold-addr-1.c: New testcase.

View File

@ -21,8 +21,15 @@
Subtract the last two off STACK_SIZE and figure out what the maximum
chunk size can be. We make the last bit conservative to account for
register saves and other processor-dependent saving. */
#define CHUNK ((STACK_SIZE-40*sizeof(int)-256*sizeof(void *))/40/sizeof(int))
register saves and other processor-dependent saving. Limit the
chunk size to some sane values. */
#define MIN(X,Y) ((X) < (Y) ? (X) : (Y))
#define MAX(X,Y) ((X) > (Y) ? (X) : (Y))
#define CHUNK \
MIN (500, (MAX (1, (signed)(STACK_SIZE-40*sizeof(int)-256*sizeof(void *)) \
/ (signed)(40*sizeof(int)))))
#else
#define CHUNK 500
#endif
@ -146,6 +153,11 @@ f (int n)
int
main ()
{
/* CHUNK needs to be at least 40 to avoid stack corruption,
since index variable i0 in "a[i0] = i0" equals 39. */
if (CHUNK < 40)
exit (0);
f (1);
exit (0);
}