diff options
-rw-r--r-- | gcc/ChangeLog | 7 | ||||
-rw-r--r-- | gcc/cfgrtl.c | 19 | ||||
-rw-r--r-- | gcc/reg-stack.c | 1 |
3 files changed, 26 insertions, 1 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index bc9b163e746..c57de2ddaa2 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,10 @@ +Fri Feb 21 11:05:44 CET 2003 Jan Hubicka <jh@suse.cz> + + * cfgrtl.c (commit_one_edge_insertion): Only mark BB for splitting. + (commit_edge_insertions): Call find_many_sub_basic_blocks + + * reg-stack.c (convert_regs): Cleax aux for blocks. + Fri Feb 21 10:29:52 CET 2003 Jan Hubicka <jh@suse.cz> * toplev.c (parse_options_and_default_flags): Undo accidental commit. diff --git a/gcc/cfgrtl.c b/gcc/cfgrtl.c index 5209aa2b85f..6d3be7e6389 100644 --- a/gcc/cfgrtl.c +++ b/gcc/cfgrtl.c @@ -1449,7 +1449,8 @@ commit_one_edge_insertion (e, watch_calls) else if (GET_CODE (last) == JUMP_INSN) abort (); - find_sub_basic_blocks (bb); + /* Mark the basic block for find_sub_basic_blocks. */ + bb->aux = &bb->aux; } /* Update the CFG for all queued instructions. */ @@ -1458,6 +1459,7 @@ void commit_edge_insertions () { basic_block bb; + sbitmap blocks; #ifdef ENABLE_CHECKING verify_flow_info (); @@ -1474,6 +1476,21 @@ commit_edge_insertions () commit_one_edge_insertion (e, false); } } + + blocks = sbitmap_alloc (last_basic_block); + sbitmap_zero (blocks); + FOR_EACH_BB (bb) + if (bb->aux) + { + SET_BIT (blocks, bb->index); + /* Check for forgotten bb->aux values before commit_edge_insertions + call. */ + if (bb->aux != &bb->aux) + abort (); + bb->aux = NULL; + } + find_many_sub_basic_blocks (blocks); + sbitmap_free (blocks); } /* Update the CFG for all queued instructions, taking special care of inserting diff --git a/gcc/reg-stack.c b/gcc/reg-stack.c index f8f4b3144bf..52be2a20bc2 100644 --- a/gcc/reg-stack.c +++ b/gcc/reg-stack.c @@ -2922,6 +2922,7 @@ convert_regs (file) inserted |= convert_regs_2 (file, b); } } + clear_aux_for_blocks (); fixup_abnormal_edges (); if (inserted) |