Commit 4fb9b830 by Richard Henderson Committed by Richard Henderson

flow.c (init_propagate_block_info): Watch out for conditional branch to next…

flow.c (init_propagate_block_info): Watch out for conditional branch to next instruction, and thus one outgoing edge.

        * flow.c (init_propagate_block_info): Watch out for conditional
        branch to next instruction, and thus one outgoing edge.

From-SVN: r33775
parent bdcabcd4
2000-05-08 Richard Henderson <rth@cygnus.com>
* flow.c (init_propagate_block_info): Watch out for conditional
branch to next instruction, and thus one outgoing edge.
2000-05-08 Nick Clifton <nickc@cygnus.com>
* config/i386/i386.h (ELIMINABLE_REGS): Fix comment.
......
......@@ -3573,16 +3573,29 @@ init_propagate_block_info (bb, live, local_set, flags)
int i;
/* Identify the successor blocks. */
bb_false = bb->succ->succ_next->dest;
bb_true = bb->succ->dest;
if (bb->succ->flags & EDGE_FALLTHRU)
if (bb->succ->succ_next != NULL)
{
basic_block t = bb_false;
bb_false = bb->succ->succ_next->dest;
if (bb->succ->flags & EDGE_FALLTHRU)
{
basic_block t = bb_false;
bb_false = bb_true;
bb_true = t;
}
else if (! (bb->succ->succ_next->flags & EDGE_FALLTHRU))
abort ();
}
else
{
/* This can happen with a conditional jump to the next insn. */
if (JUMP_LABEL (bb->end) != bb_true->head)
abort ();
/* Simplest way to do nothing. */
bb_false = bb_true;
bb_true = t;
}
else if (! (bb->succ->succ_next->flags & EDGE_FALLTHRU))
abort ();
/* Extract the condition from the branch. */
cond_true = XEXP (SET_SRC (PATTERN (bb->end)), 0);
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment