From b64d061e8060c5625d55d9f20aa3581c05b3cde3 Mon Sep 17 00:00:00 2001 From: Richard Henderson Date: Tue, 21 Aug 2001 22:21:10 -0700 Subject: [PATCH] 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 --- gcc/ChangeLog | 5 +++++ gcc/ifcvt.c | 9 ++++++--- 2 files changed, 11 insertions(+), 3 deletions(-) diff --git a/gcc/ChangeLog b/gcc/ChangeLog index dab28746f14c..55dfa7072b92 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,8 @@ +2001-08-21 Richard Henderson + + * ifcvt.c (find_if_block): Allow join_bb as EXIT. + (merge_if_block): Handle fallout from same. + 2001-08-21 Kaveh R. Ghazi * builtins.c (type_to_class): Fix typo in last change. diff --git a/gcc/ifcvt.c b/gcc/ifcvt.c index a877a90da183..dc78672a54f7 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;