From 9dcb4381bc1795c369bda33b6ebaf842b32b2bdc Mon Sep 17 00:00:00 2001 From: Richard Henderson Date: Mon, 16 Feb 2004 01:39:54 -0800 Subject: [PATCH] * cse.c (cse_insn): Don't lose REG_NON_LOCAL_GOTO note. From-SVN: r77877 --- gcc/ChangeLog | 4 ++++ gcc/cse.c | 12 +++++++++++- 2 files changed, 15 insertions(+), 1 deletion(-) diff --git a/gcc/ChangeLog b/gcc/ChangeLog index d0d6d799ba8..49ae020a133 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,7 @@ +2004-02-16 Richard Henderson + + * cse.c (cse_insn): Don't lose REG_NON_LOCAL_GOTO note. + 2004-02-15 Kazu Hirata * config/h8300/h8300.md: Remove unnecessary parallels from diff --git a/gcc/cse.c b/gcc/cse.c index 55fe072105d..4262f4d3275 100644 --- a/gcc/cse.c +++ b/gcc/cse.c @@ -5719,10 +5719,20 @@ cse_insn (rtx insn, rtx libcall_insn) and hope for the best. */ if (n_sets == 1) { - rtx new = emit_jump_insn_after (gen_jump (XEXP (src, 0)), insn); + rtx new, note; + new = emit_jump_insn_after (gen_jump (XEXP (src, 0)), insn); JUMP_LABEL (new) = XEXP (src, 0); LABEL_NUSES (XEXP (src, 0))++; + + /* Make sure to copy over REG_NON_LOCAL_GOTO. */ + note = find_reg_note (insn, REG_NON_LOCAL_GOTO, 0); + if (note) + { + XEXP (note, 1) = NULL_RTX; + REG_NOTES (new) = note; + } + delete_insn (insn); insn = new; -- 2.30.2