diff options
author | Jeffrey A Law <law@cygnus.com> | 2000-01-13 05:41:44 +0000 |
---|---|---|
committer | Jeff Law <law@gcc.gnu.org> | 2000-01-12 22:41:44 -0700 |
commit | 08520ad8d610dd05a635283ddf07ae95e4798a13 (patch) | |
tree | 3e1c2be8dccc28121be86f99fe0e7b0ec499deae | |
parent | 499bf451e340a680eddec460999eb2857b56d9a2 (diff) | |
download | gcc-08520ad8d610dd05a635283ddf07ae95e4798a13.zip gcc-08520ad8d610dd05a635283ddf07ae95e4798a13.tar.gz gcc-08520ad8d610dd05a635283ddf07ae95e4798a13.tar.bz2 |
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
-rw-r--r-- | gcc/ChangeLog | 8 | ||||
-rw-r--r-- | gcc/flow.c | 12 |
2 files changed, 15 insertions, 5 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 51e6e67..8e33b56 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 <robertl@sco.com> * i386/sco5.h (INIT_SECTION_ASM_OP_COFF): Rename section to "ctor". @@ -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 |