From cbae24bcbe7fbd555332b5cc263c40718c9a2f67 Mon Sep 17 00:00:00 2001 From: Richard Kenner Date: Tue, 1 Jul 1997 23:25:39 -0400 Subject: [PATCH] (redundant_insn): If INSN or possible match has REG_UNUSED note, don't have match. From-SVN: r14370 --- gcc/reorg.c | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/gcc/reorg.c b/gcc/reorg.c index 5f24cfc200c..77279f9d812 100644 --- a/gcc/reorg.c +++ b/gcc/reorg.c @@ -1997,6 +1997,11 @@ redundant_insn (insn, target, delay_list) struct resources needed, set; int i; + /* If INSN has any REG_UNUSED notes, it can't match anything since we + are allowed to not actually assign to such a register. */ + if (find_reg_note (insn, REG_UNUSED, NULL_RTX) != 0) + return 0; + /* Scan backwards looking for a match. */ for (trial = PREV_INSN (target); trial; trial = PREV_INSN (trial)) { @@ -2035,7 +2040,8 @@ redundant_insn (insn, target, delay_list) resource requirements as we go. */ for (i = XVECLEN (pat, 0) - 1; i > 0; i--) if (GET_CODE (XVECEXP (pat, 0, i)) == GET_CODE (insn) - && rtx_equal_p (PATTERN (XVECEXP (pat, 0, i)), ipat)) + && rtx_equal_p (PATTERN (XVECEXP (pat, 0, i)), ipat) + && ! find_reg_note (XVECEXP (pat, 0, i), REG_UNUSED, NULL_RTX)) break; /* If found a match, exit this loop early. */ @@ -2043,7 +2049,8 @@ redundant_insn (insn, target, delay_list) break; } - else if (GET_CODE (trial) == GET_CODE (insn) && rtx_equal_p (pat, ipat)) + else if (GET_CODE (trial) == GET_CODE (insn) && rtx_equal_p (pat, ipat) + && ! find_reg_note (trial, REG_UNUSED, NULL_RTX)) break; } -- 2.30.2