diff options
author | Jan Hubicka <jh@suse.cz> | 2006-07-29 15:14:22 +0200 |
---|---|---|
committer | Jan Hubicka <hubicka@gcc.gnu.org> | 2006-07-29 13:14:22 +0000 |
commit | 370adb7b5dcde35845e0d7b43cf05628a6193c7a (patch) | |
tree | 331dc480555ba8c366d3435b80e94c76d4cc12f0 /gcc/flow.c | |
parent | 76ebb8de0046b5bbdb13c086618be11becd964d1 (diff) | |
download | gcc-370adb7b5dcde35845e0d7b43cf05628a6193c7a.zip gcc-370adb7b5dcde35845e0d7b43cf05628a6193c7a.tar.gz gcc-370adb7b5dcde35845e0d7b43cf05628a6193c7a.tar.bz2 |
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
Diffstat (limited to 'gcc/flow.c')
-rw-r--r-- | gcc/flow.c | 12 |
1 files changed, 10 insertions, 2 deletions
@@ -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 (®_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); |