global.c (global_alloc): Use xmalloc instead of alloca for CONFLICTS...

* global.c (global_alloc): Use xmalloc instead of alloca for
	CONFLICTS, since max_allocno * allocno_row_words alone can be more
	than 2.5Mb sometimes.

From-SVN: r16223
This commit is contained in:
Brendan Kehoe 1997-10-28 23:39:28 +00:00 committed by Brendan Kehoe
parent d540ae2cd8
commit ba3b38784c
2 changed files with 13 additions and 2 deletions

View File

@ -1,3 +1,9 @@
1997-10-28 Brendan Kehoe <brendan@lisa.cygnus.com>
* global.c (global_alloc): Use xmalloc instead of alloca for
CONFLICTS, since max_allocno * allocno_row_words alone can be more
than 2.5Mb sometimes.
Tue Oct 28 15:29:15 1997 Richard Henderson <rth@cygnus.com>
* reload1.c (eliminate_regs [SET]): If [SUBREG] widened the mode of

View File

@ -486,8 +486,11 @@ global_alloc (file)
allocno_row_words = (max_allocno + INT_BITS - 1) / INT_BITS;
conflicts = (INT_TYPE *) alloca (max_allocno * allocno_row_words
* sizeof (INT_TYPE));
/* We used to use alloca here, but the size of what it would try to
allocate would occasionally cause it to exceed the stack limit and
cause unpredictable core dumps. Some examples were > 2Mb in size. */
conflicts = (INT_TYPE *) xmalloc (max_allocno * allocno_row_words
* sizeof (INT_TYPE));
bzero ((char *) conflicts,
max_allocno * allocno_row_words * sizeof (INT_TYPE));
@ -570,6 +573,8 @@ global_alloc (file)
}
}
free (conflicts);
/* Do the reloads now while the allocno data still exist, so that we can
try to assign new hard regs to any pseudo regs that are spilled. */