diff mbox

[5/6] combine: handle REG_UNUSED in reg_dead_at_p (PR59278)

Message ID 2722d25dd8dd4c358b092a67c28042d3e9d93af5.1417135738.git.segher@kernel.crashing.org
State New
Headers show

Commit Message

Segher Boessenkool Nov. 28, 2014, 1:44 a.m. UTC
Currently reg_dead_at_p returns 0 for registers that are set but never
used.  This patch repairs that oversight.  This fixes PR59278.


2014-11-27  Segher Boessenkool  <segher@kernel.crashing.org>

gcc/
	PR rtl-optimization/59278
	combine (reg_dead_at_p): Consider REG_UNUSED notes.

---
 gcc/combine.c | 3 +++
 1 file changed, 3 insertions(+)

Comments

Jeff Law Dec. 1, 2014, 5:38 p.m. UTC | #1
On 11/27/14 18:44, Segher Boessenkool wrote:
> Currently reg_dead_at_p returns 0 for registers that are set but never
> used.  This patch repairs that oversight.  This fixes PR59278.
>
>
> 2014-11-27  Segher Boessenkool  <segher@kernel.crashing.org>
>
> gcc/
> 	PR rtl-optimization/59278
> 	combine (reg_dead_at_p): Consider REG_UNUSED notes.
OK with a testcase.  ISTM you can just create an SH specific testcase 
from the code in the BZ.  Pre-approved with suitable testcase.

jeff
diff mbox

Patch

diff --git a/gcc/combine.c b/gcc/combine.c
index 83a0a10..91ddff4 100644
--- a/gcc/combine.c
+++ b/gcc/combine.c
@@ -12990,6 +12990,9 @@  reg_dead_at_p (rtx reg, rtx_insn *insn)
     {
       if (INSN_P (insn))
         {
+	  if (find_regno_note (insn, REG_UNUSED, reg_dead_regno))
+	    return 1;
+
 	  note_stores (PATTERN (insn), reg_dead_at_p_1, NULL);
 	  if (reg_dead_flag)
 	    return reg_dead_flag == 1 ? 1 : 0;