diff options
author | hubicka <hubicka@138bc75d-0d04-0410-961f-82ee72b054a4> | 2003-02-21 22:14:23 +0000 |
---|---|---|
committer | hubicka <hubicka@138bc75d-0d04-0410-961f-82ee72b054a4> | 2003-02-21 22:14:23 +0000 |
commit | c96040c6139d202a494e3f88ab903dca4e8f3432 (patch) | |
tree | 783112e221f5003735edc015c9910f43ecb7852d /gcc/cfgrtl.c | |
parent | 6e3789e83c7a8ae270333fbf501a4b6bc66840b9 (diff) | |
download | ppe42-gcc-c96040c6139d202a494e3f88ab903dca4e8f3432.tar.gz ppe42-gcc-c96040c6139d202a494e3f88ab903dca4e8f3432.zip |
* cfgrtl.c (commit_edge_insertions): Call
find_many_sub_basic_block only when some code has been emitted.
(commit_edge_insertions_watch_calls): Bring into sync with
commit_edge_insertions
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@63248 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc/cfgrtl.c')
-rw-r--r-- | gcc/cfgrtl.c | 34 |
1 files changed, 32 insertions, 2 deletions
diff --git a/gcc/cfgrtl.c b/gcc/cfgrtl.c index 6d3be7e6389..77290a9b806 100644 --- a/gcc/cfgrtl.c +++ b/gcc/cfgrtl.c @@ -1460,6 +1460,7 @@ commit_edge_insertions () { basic_block bb; sbitmap blocks; + bool changed = false; #ifdef ENABLE_CHECKING verify_flow_info (); @@ -1473,10 +1474,16 @@ commit_edge_insertions () { next = e->succ_next; if (e->insns) - commit_one_edge_insertion (e, false); + { + changed = true; + commit_one_edge_insertion (e, false); + } } } + if (!changed) + return; + blocks = sbitmap_alloc (last_basic_block); sbitmap_zero (blocks); FOR_EACH_BB (bb) @@ -1500,6 +1507,8 @@ void commit_edge_insertions_watch_calls () { basic_block bb; + sbitmap blocks; + bool changed = false; #ifdef ENABLE_CHECKING verify_flow_info (); @@ -1513,9 +1522,30 @@ commit_edge_insertions_watch_calls () { next = e->succ_next; if (e->insns) - commit_one_edge_insertion (e, true); + { + changed = true; + commit_one_edge_insertion (e, true); + } } } + + if (!changed) + return; + + 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); } /* Print out one basic block with live information at start and end. */ |