aboutsummaryrefslogtreecommitdiff
path: root/gcc/cse.c
diff options
context:
space:
mode:
authorEric Botcazou <ebotcazou@gcc.gnu.org>2003-10-06 09:18:01 +0000
committerEric Botcazou <ebotcazou@gcc.gnu.org>2003-10-06 09:18:01 +0000
commit9ebfd78bad3cde0cb92ae3261314546fce5e949e (patch)
treeaa7bff17dc2ec7053af2c62a9b55799585b49947 /gcc/cse.c
parent8c03ca00a652f280811502a22cde311ef72cb861 (diff)
downloadgcc-9ebfd78bad3cde0cb92ae3261314546fce5e949e.zip
gcc-9ebfd78bad3cde0cb92ae3261314546fce5e949e.tar.gz
gcc-9ebfd78bad3cde0cb92ae3261314546fce5e949e.tar.bz2
re PR rtl-optimization/12215 (ICE in make_label_edge with -fnon-call-exceptions -fno-gcse -O2)
PR optimization/12215 * cse.c (cse_set_around_loop): Emit the move at the beginning of the next basic block for trapping sets. From-SVN: r72141
Diffstat (limited to 'gcc/cse.c')
-rw-r--r--gcc/cse.c10
1 files changed, 9 insertions, 1 deletions
diff --git a/gcc/cse.c b/gcc/cse.c
index a4847a8..30355df 100644
--- a/gcc/cse.c
+++ b/gcc/cse.c
@@ -6666,7 +6666,15 @@ cse_set_around_loop (rtx x, rtx insn, rtx loop_start)
abort ();
}
else
- emit_insn_after (move, p);
+ {
+ if (control_flow_insn_p (p))
+ /* p can cause a control flow transfer so it
+ is the last insn of a basic block. We can't
+ therefore use emit_insn_after. */
+ emit_insn_before (move, next_nonnote_insn (p));
+ else
+ emit_insn_after (move, p);
+ }
}
break;
}