summaryrefslogtreecommitdiff
path: root/gcc/lcm.c
diff options
context:
space:
mode:
authoraoliva <aoliva@138bc75d-0d04-0410-961f-82ee72b054a4>2001-02-07 17:39:47 +0000
committeraoliva <aoliva@138bc75d-0d04-0410-961f-82ee72b054a4>2001-02-07 17:39:47 +0000
commita24d0647daf28e72d5ee32f38816da5eeded43dd (patch)
treefb9e3beecd853f5ca41d3df28587720e76b7b5bb /gcc/lcm.c
parent9a3bcffd72bd546edf923d22039b25bce3b3b490 (diff)
downloadgcc-a24d0647daf28e72d5ee32f38816da5eeded43dd.tar.gz
* lcm.c (optimize_mode_switching): Emit mode_set before the
JUMP_INSN of an abnormal edge. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@39518 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc/lcm.c')
-rw-r--r--gcc/lcm.c5
1 files changed, 4 insertions, 1 deletions
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);
}