diff --git a/gcc/ChangeLog b/gcc/ChangeLog index a5aaf89ac15..bbfc2fe9b30 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,8 @@ +2001-02-07 Alexandre Oliva + + * lcm.c (optimize_mode_switching): Emit mode_set before the + JUMP_INSN of an abnormal edge. + 2001-02-07 Bernd Schmidt * builtins.c (expand_builtin_setjmp_receiver): Emit an ASM_INPUT as diff --git a/gcc/lcm.c b/gcc/lcm.c index ff442749605..d092c7a7089 100644 --- a/gcc/lcm.c +++ b/gcc/lcm.c @@ -1227,7 +1227,10 @@ optimize_mode_switching (file) previous block. */ if (eg->flags & EDGE_ABNORMAL) { - src_bb->end = emit_insn_after (mode_set, src_bb->end); + if (GET_CODE (src_bb->end) == JUMP_INSN) + emit_insn_before (mode_set, src_bb->end); + else + src_bb->end = emit_insn_after (mode_set, src_bb->end); bb_info[j][src_bb->index].computing = mode; RESET_BIT (transp[src_bb->index], j); }