diff options
author | Eric Botcazou <ebotcazou@gcc.gnu.org> | 2003-10-06 09:18:01 +0000 |
---|---|---|
committer | Eric Botcazou <ebotcazou@gcc.gnu.org> | 2003-10-06 09:18:01 +0000 |
commit | 9ebfd78bad3cde0cb92ae3261314546fce5e949e (patch) | |
tree | aa7bff17dc2ec7053af2c62a9b55799585b49947 /gcc/cse.c | |
parent | 8c03ca00a652f280811502a22cde311ef72cb861 (diff) | |
download | gcc-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.c | 10 |
1 files changed, 9 insertions, 1 deletions
@@ -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; } |