aboutsummaryrefslogtreecommitdiff
path: root/gcc/cse.c
diff options
context:
space:
mode:
Diffstat (limited to 'gcc/cse.c')
-rw-r--r--gcc/cse.c5
1 files changed, 5 insertions, 0 deletions
diff --git a/gcc/cse.c b/gcc/cse.c
index ca577c5..651203d 100644
--- a/gcc/cse.c
+++ b/gcc/cse.c
@@ -5395,6 +5395,11 @@ cse_insn (rtx insn, rtx libcall_insn)
|| (GET_CODE (trial) == LABEL_REF
&& ! condjump_p (insn))))
{
+ /* Don't substitute non-local labels, this confuses CFG. */
+ if (GET_CODE (trial) == LABEL_REF
+ && LABEL_REF_NONLOCAL_P (trial))
+ continue;
+
SET_SRC (sets[i].rtl) = trial;
cse_jumps_altered = 1;
break;