From: Jeffrey A Law Date: Thu, 13 Jan 2000 05:41:44 +0000 (+0000) Subject: flow.c (split_edge): If we have to insert a new jump, make sure to associate it with... X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=08520ad8d610dd05a635283ddf07ae95e4798a13;p=gcc.git flow.c (split_edge): If we have to insert a new jump, make sure to associate it with a basic block. * flow.c (split_edge): If we have to insert a new jump, make sure to associate it with a basic block. * flow.c (commit_one_edge_insertion): A block with one successor can end in a JUMP_INSN that is not a simplejump. From-SVN: r31380 --- diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 51e6e679285..8e33b563511 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,11 @@ +Wed Jan 12 22:34:00 2000 Jeffrey A Law (law@cygnus.com) + + * flow.c (split_edge): If we have to insert a new jump, make + sure to associate it with a basic block. + + * flow.c (commit_one_edge_insertion): A block with one successor + can end in a JUMP_INSN that is not a simplejump. + 2000-01-12 Robert Lipe * i386/sco5.h (INIT_SECTION_ASM_OP_COFF): Rename section to "ctor". diff --git a/gcc/flow.c b/gcc/flow.c index 10bcdcf1fb8..93677cfe341 100644 --- a/gcc/flow.c +++ b/gcc/flow.c @@ -1387,6 +1387,7 @@ split_edge (edge_in) pos = emit_jump_insn_after (gen_jump (old_succ->head), jump_block->end); jump_block->end = pos; + set_block_for_insn (pos, jump_block); emit_barrier_after (pos); /* ... let jump know that label is in use, ... */ @@ -1580,13 +1581,14 @@ commit_one_edge_insertion (e) && e->src != ENTRY_BLOCK_PTR) { bb = e->src; + /* It is possible to have a non-simple jump here. Consider a target + where some forms of unconditional jumps clobber a register. This + happens on the fr30 for example. + + We know this block has a single successor, so we can just emit + the queued insns before the jump. */ if (GET_CODE (bb->end) == JUMP_INSN) { - /* ??? Is it possible to wind up with non-simple jumps? Perhaps - a jump with delay slots already filled? */ - if (! simplejump_p (bb->end)) - abort (); - before = bb->end; } else