Commit 6774a66f by Richard Henderson Committed by Richard Henderson

bb-reorder.c (fix_crossing_conditional_branches): Emit all insns before calling create_basic_block.

        * bb-reorder.c (fix_crossing_conditional_branches): Emit all insns
        before calling create_basic_block.

From-SVN: r176420
parent 8b316874
2011-07-18 Richard Henderson <rth@redhat.com>
* bb-reorder.c (fix_crossing_conditional_branches): Emit all insns
before calling create_basic_block.
2011-07-18 Jakub Jelinek <jakub@redhat.com> 2011-07-18 Jakub Jelinek <jakub@redhat.com>
PR middle-end/49675 PR middle-end/49675
......
...@@ -1522,7 +1522,6 @@ fix_crossing_conditional_branches (void) ...@@ -1522,7 +1522,6 @@ fix_crossing_conditional_branches (void)
{ {
basic_block cur_bb; basic_block cur_bb;
basic_block new_bb; basic_block new_bb;
basic_block last_bb;
basic_block dest; basic_block dest;
edge succ1; edge succ1;
edge succ2; edge succ2;
...@@ -1532,9 +1531,6 @@ fix_crossing_conditional_branches (void) ...@@ -1532,9 +1531,6 @@ fix_crossing_conditional_branches (void)
rtx set_src; rtx set_src;
rtx old_label = NULL_RTX; rtx old_label = NULL_RTX;
rtx new_label; rtx new_label;
rtx new_jump;
last_bb = EXIT_BLOCK_PTR->prev_bb;
FOR_EACH_BB (cur_bb) FOR_EACH_BB (cur_bb)
{ {
...@@ -1597,35 +1593,27 @@ fix_crossing_conditional_branches (void) ...@@ -1597,35 +1593,27 @@ fix_crossing_conditional_branches (void)
new_label = block_label (new_bb); new_label = block_label (new_bb);
else else
{ {
basic_block last_bb;
rtx new_jump;
/* Create new basic block to be dest for /* Create new basic block to be dest for
conditional jump. */ conditional jump. */
new_bb = create_basic_block (NULL, NULL, last_bb);
new_bb->aux = last_bb->aux;
last_bb->aux = new_bb;
last_bb = new_bb;
/* Put appropriate instructions in new bb. */ /* Put appropriate instructions in new bb. */
new_label = gen_label_rtx (); new_label = gen_label_rtx ();
emit_label_before (new_label, BB_HEAD (new_bb)); emit_label (new_label);
BB_HEAD (new_bb) = new_label; BB_HEAD (new_bb) = new_label;
if (GET_CODE (old_label) == LABEL_REF) gcc_assert (GET_CODE (old_label) == LABEL_REF);
{ old_label = JUMP_LABEL (old_jump);
old_label = JUMP_LABEL (old_jump); new_jump = emit_jump_insn (gen_jump (old_label));
new_jump = emit_jump_insn_after (gen_jump
(old_label),
BB_END (new_bb));
}
else
{
gcc_assert (HAVE_return
&& GET_CODE (old_label) == RETURN);
new_jump = emit_jump_insn_after (gen_return (),
BB_END (new_bb));
}
JUMP_LABEL (new_jump) = old_label; JUMP_LABEL (new_jump) = old_label;
BB_END (new_bb) = new_jump;
last_bb = EXIT_BLOCK_PTR->prev_bb;
new_bb = create_basic_block (new_label, new_jump, last_bb);
new_bb->aux = last_bb->aux;
last_bb->aux = new_bb;
emit_barrier_after_bb (new_bb); emit_barrier_after_bb (new_bb);
......
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