From e758023dab54625ad05875ce5c61d76a8b8a531d Mon Sep 17 00:00:00 2001 From: Hans-Peter Nilsson Date: Thu, 23 Sep 2004 21:59:13 +0000 Subject: [PATCH] re PR target/17626 (Recent peephole2:s may cause internal compiler errors) PR target/17626 * config/cris/cris.md (moverside, movemside): Rename variable "reg" to "otherop". To generate canonical RTX, check that otherop isn't constant instead of checking that operand 1 is a register. From-SVN: r87988 --- gcc/ChangeLog | 7 +++++++ gcc/config/cris/cris.md | 20 ++++++++++++-------- 2 files changed, 19 insertions(+), 8 deletions(-) diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 4eeefe8bc68..1d77339ec15 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,10 @@ +2004-09-23 Hans-Peter Nilsson + + PR target/17626 + * config/cris/cris.md (moverside, movemside): Rename variable + "reg" to "otherop". To generate canonical RTX, check that otherop + isn't constant instead of checking that operand 1 is a register. + 2004-09-23 Jakub Jelinek * tree-ssa-propagate.c (set_rhs): Fail if EXPR is COMPOUND_EXPR. diff --git a/gcc/config/cris/cris.md b/gcc/config/cris/cris.md index be137a58d61..6092d241b73 100644 --- a/gcc/config/cris/cris.md +++ b/gcc/config/cris/cris.md @@ -4901,17 +4901,19 @@ [(set (match_dup 4) (match_dup 6)) (set (match_dup 0) (plus:SI (match_dup 7) (match_dup 8)))])] { - rtx reg + rtx otherop = rtx_equal_p (operands[2], operands[0]) ? operands[3] : operands[2]; - if (REG_S_P (operands[1])) + /* Make sure we have canonical RTX so we match the insn pattern - a + register or MULT in the first operand, not a constant. */ + if (CONSTANT_P (otherop)) { operands[7] = operands[1]; - operands[8] = reg; + operands[8] = otherop; } else { - operands[7] = reg; + operands[7] = otherop; operands[8] = operands[1]; } operands[6] @@ -4949,17 +4951,19 @@ [(set (match_dup 6) (match_dup 5)) (set (match_dup 0) (plus:SI (match_dup 7) (match_dup 8)))])] { - rtx reg + rtx otherop = rtx_equal_p (operands[2], operands[0]) ? operands[3] : operands[2]; - if (REG_S_P (operands[1])) + /* Make sure we have canonical RTX so we match the insn pattern - a + register or MULT in the first operand, not a constant. */ + if (CONSTANT_P (otherop)) { operands[7] = operands[1]; - operands[8] = reg; + operands[8] = otherop; } else { - operands[7] = reg; + operands[7] = otherop; operands[8] = operands[1]; } operands[6] -- 2.30.2