diff options
Diffstat (limited to 'gcc/cse.c')
-rw-r--r-- | gcc/cse.c | 6 |
1 files changed, 3 insertions, 3 deletions
diff --git a/gcc/cse.c b/gcc/cse.c index b7da8a34978..ca577c5de6b 100644 --- a/gcc/cse.c +++ b/gcc/cse.c @@ -7392,6 +7392,7 @@ cse_cc_succs (basic_block bb, rtx cc_reg, rtx cc_src, bool can_change_mode) rtx last_insns[2]; unsigned int i; rtx newreg; + edge_iterator ei; /* We expect to have two successors. Look at both before picking the final mode for the comparison. If we have more successors @@ -7402,7 +7403,7 @@ cse_cc_succs (basic_block bb, rtx cc_reg, rtx cc_src, bool can_change_mode) found_equiv = false; mode = GET_MODE (cc_src); insn_count = 0; - for (e = bb->succ; e; e = e->succ_next) + FOR_EACH_EDGE (e, ei, bb->succs) { rtx insn; rtx end; @@ -7410,8 +7411,7 @@ cse_cc_succs (basic_block bb, rtx cc_reg, rtx cc_src, bool can_change_mode) if (e->flags & EDGE_COMPLEX) continue; - if (! e->dest->pred - || e->dest->pred->pred_next + if (EDGE_COUNT (e->dest->preds) != 1 || e->dest == EXIT_BLOCK_PTR) continue; |