diff options
author | Richard Henderson <rth@redhat.com> | 2001-08-21 22:21:10 -0700 |
---|---|---|
committer | Richard Henderson <rth@gcc.gnu.org> | 2001-08-21 22:21:10 -0700 |
commit | b64d061e8060c5625d55d9f20aa3581c05b3cde3 (patch) | |
tree | 52b47aa01a9ec67a95b7c255f3990bda897b57d3 /gcc | |
parent | 91db4a92c6c22c25265d07fd97be83154a3c47da (diff) | |
download | gcc-b64d061e8060c5625d55d9f20aa3581c05b3cde3.zip gcc-b64d061e8060c5625d55d9f20aa3581c05b3cde3.tar.gz gcc-b64d061e8060c5625d55d9f20aa3581c05b3cde3.tar.bz2 |
ifcvt.c (find_if_block): Allow join_bb as EXIT.
* ifcvt.c (find_if_block): Allow join_bb as EXIT.
(merge_if_block): Handle fallout from same.
From-SVN: r45093
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/ChangeLog | 5 | ||||
-rw-r--r-- | gcc/ifcvt.c | 9 |
2 files changed, 11 insertions, 3 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index dab2874..55dfa70 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,8 @@ +2001-08-21 Richard Henderson <rth@redhat.com> + + * ifcvt.c (find_if_block): Allow join_bb as EXIT. + (merge_if_block): Handle fallout from same. + 2001-08-21 Kaveh R. Ghazi <ghazi@caip.rutgers.edu> * builtins.c (type_to_class): Fix typo in last change. diff --git a/gcc/ifcvt.c b/gcc/ifcvt.c index a877a90..dc78672 100644 --- a/gcc/ifcvt.c +++ b/gcc/ifcvt.c @@ -1881,7 +1881,9 @@ merge_if_block (test_bb, then_bb, else_bb, join_bb) is more than one remaining edge, it must come from elsewhere. There may be zero incoming edges if the THEN block didn't actually join back up (as with a call to abort). */ - else if (join_bb->pred == NULL || join_bb->pred->pred_next == NULL) + else if ((join_bb->pred == NULL + || join_bb->pred->pred_next == NULL) + && join_bb != EXIT_BLOCK_PTR) { /* We can merge the JOIN. */ if (life_data_ok) @@ -1901,7 +1903,8 @@ merge_if_block (test_bb, then_bb, else_bb, join_bb) abort (); /* Remove the jump and cruft from the end of the COMBO block. */ - tidy_fallthru_edge (combo_bb->succ, combo_bb, join_bb); + if (join_bb != EXIT_BLOCK_PTR) + tidy_fallthru_edge (combo_bb->succ, combo_bb, join_bb); } /* Make sure we update life info properly. */ @@ -2067,7 +2070,7 @@ find_if_block (test_bb, then_edge, else_edge) next_index = then_bb->index; if (else_bb && ++next_index != else_bb->index) return FALSE; - if (++next_index != join_bb->index) + if (++next_index != join_bb->index && join_bb->index != EXIT_BLOCK) { if (else_bb) join_bb = NULL; |