diff options
author | hubicka <hubicka@138bc75d-0d04-0410-961f-82ee72b054a4> | 2003-02-21 10:06:44 +0000 |
---|---|---|
committer | hubicka <hubicka@138bc75d-0d04-0410-961f-82ee72b054a4> | 2003-02-21 10:06:44 +0000 |
commit | 43585301cffd714beb29f29db87cfb05af5fe288 (patch) | |
tree | 18a335286c42e4f9ba5c597a88b20dbc373f200e /gcc/cfgrtl.c | |
parent | 206ff28d730b26ed1d8a8343a0b52eb0ada69e98 (diff) | |
download | gcc-43585301cffd714beb29f29db87cfb05af5fe288.tar.gz |
* 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.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@63216 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc/cfgrtl.c')
-rw-r--r-- | gcc/cfgrtl.c | 19 |
1 files changed, 18 insertions, 1 deletions
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 |