summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--gcc/ChangeLog5
-rw-r--r--gcc/lcm.c5
2 files changed, 9 insertions, 1 deletions
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 <aoliva@redhat.com>
+
+ * lcm.c (optimize_mode_switching): Emit mode_set before the
+ JUMP_INSN of an abnormal edge.
+
2001-02-07 Bernd Schmidt <bernds@redhat.com>
* 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);
}