+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
/* 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;
+ }
}
\f
/* Records the basic block struct in BLOCK_FOR_INSN for every insn. */
FOR_BB_BETWEEN (bb, ENTRY_BLOCK_PTR, NULL, next_bb)
{
- bb->il.rtl->global_live_at_start = ALLOC_REG_SET (®_obstack);
- bb->il.rtl->global_live_at_end = ALLOC_REG_SET (®_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 (®_obstack);
+ bb->il.rtl->global_live_at_end = ALLOC_REG_SET (®_obstack);
+ }
}
regs_live_at_setjmp = ALLOC_REG_SET (®_obstack);