diff options
author | rakdver <rakdver@138bc75d-0d04-0410-961f-82ee72b054a4> | 2002-05-31 11:09:17 +0000 |
---|---|---|
committer | rakdver <rakdver@138bc75d-0d04-0410-961f-82ee72b054a4> | 2002-05-31 11:09:17 +0000 |
commit | 1bc9f141ac421850a0436df9832d4484e065f965 (patch) | |
tree | d4430a77bc104b74e1942c1593f798f1f7300879 | |
parent | 87f7fc8ffbe35389f88e68bbf60a672d7f463c02 (diff) | |
download | gcc-1bc9f141ac421850a0436df9832d4484e065f965.tar.gz |
* cfgloop.c (flow_loops_find): Initialize first and last fields
correctly.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@54104 138bc75d-0d04-0410-961f-82ee72b054a4
-rw-r--r-- | gcc/ChangeLog | 5 | ||||
-rw-r--r-- | gcc/cfgloop.c | 16 |
2 files changed, 16 insertions, 5 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 151362c85e0..b2027582869 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,8 @@ +2002-05-31 Zdenek Dvorak <rakdver@atrey.karlin.mff.cuni.cz> + + * cfgloop.c (flow_loops_find): Initialize first and last fields + correctly. + 2002-05-31 Neil Booth <neil@daikokuya.demon.co.uk> * c-common.c (builtin_define_std): Correct logic. diff --git a/gcc/cfgloop.c b/gcc/cfgloop.c index aed264172fd..7b0c8415d88 100644 --- a/gcc/cfgloop.c +++ b/gcc/cfgloop.c @@ -644,7 +644,7 @@ flow_loops_find (loops, flags) sbitmap *dom; int *dfs_order; int *rc_order; - basic_block header; + basic_block header, bb; /* This function cannot be repeatedly called with different flags to build up the loop information. The loop tree @@ -768,10 +768,16 @@ flow_loops_find (loops, flags) These are often the same as the loop header and loop latch respectively, but this is not always the case. */ - loop->first - = BASIC_BLOCK (sbitmap_first_set_bit (loop->nodes)); - loop->last - = BASIC_BLOCK (sbitmap_last_set_bit (loop->nodes)); + + FOR_EACH_BB (bb) + if (TEST_BIT (loop->nodes, bb->index)) + break; + loop->first = bb; + + FOR_EACH_BB_REVERSE (bb) + if (TEST_BIT (loop->nodes, bb->index)) + break; + loop->last = bb; flow_loop_scan (loops, loop, flags); } |