re PR middle-end/28071 (A file that can not be compiled in reasonable time/space)

PR rtl-optimization/28071
	* cfgrtl.c (rtl_delete_block): Free regsets.
	* flow.c (allocate_bb_life_data): Re-use regsets if available.

From-SVN: r115810
This commit is contained in:
Jan Hubicka 2006-07-29 15:14:22 +02:00 committed by Jan Hubicka
parent 76ebb8de00
commit 370adb7b5d
3 changed files with 23 additions and 2 deletions

View File

@ -1,3 +1,9 @@
2006-07-28 Jan Hubicka <jh@suse.cz>
PR rtl-optimization/28071
* cfgrtl.c (rtl_delete_block): Free regsets.
* flow.c (allocate_bb_life_data): Re-use regsets if available.
2006-07-28 Volker Reichelt <reichelt@igpm.rwth-aachen.de>
* Makefile.in: Use $(HEADER_H) instead of header.h in dependencies

View File

@ -386,6 +386,13 @@ rtl_delete_block (basic_block b)
/* Selectively delete the entire chain. */
BB_HEAD (b) = NULL;
delete_insn_chain (insn, end);
if (b->il.rtl->global_live_at_start)
{
FREE_REG_SET (b->il.rtl->global_live_at_start);
FREE_REG_SET (b->il.rtl->global_live_at_end);
b->il.rtl->global_live_at_start = NULL;
b->il.rtl->global_live_at_end = NULL;
}
}
/* Records the basic block struct in BLOCK_FOR_INSN for every insn. */

View File

@ -1564,8 +1564,16 @@ allocate_bb_life_data (void)
FOR_BB_BETWEEN (bb, ENTRY_BLOCK_PTR, NULL, next_bb)
{
bb->il.rtl->global_live_at_start = ALLOC_REG_SET (&reg_obstack);
bb->il.rtl->global_live_at_end = ALLOC_REG_SET (&reg_obstack);
if (bb->il.rtl->global_live_at_start)
{
CLEAR_REG_SET (bb->il.rtl->global_live_at_start);
CLEAR_REG_SET (bb->il.rtl->global_live_at_end);
}
else
{
bb->il.rtl->global_live_at_start = ALLOC_REG_SET (&reg_obstack);
bb->il.rtl->global_live_at_end = ALLOC_REG_SET (&reg_obstack);
}
}
regs_live_at_setjmp = ALLOC_REG_SET (&reg_obstack);