aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorHans-Peter Nilsson <hp@axis.com>2004-09-29 19:46:18 +0000
committerHans-Peter Nilsson <hp@axis.com>2004-09-29 19:46:18 +0000
commitade79c2283417a65845ffb568eb993d7842e9607 (patch)
treecc5465ee34f8f7a14ece2536147cd1434557e968
parent3e8397bb52db5f16591c223e59d6b70c2cfabec7 (diff)
* config/cris/cris.md (moverside, movemside): With MEM, make sure
the address is (plus reg mem). git-svn-id: https://gcc.gnu.org/svn/gcc/trunk@88298 138bc75d-0d04-0410-961f-82ee72b054a4
-rw-r--r--gcc/ChangeLog5
-rw-r--r--gcc/config/cris/cris.md14
2 files changed, 13 insertions, 6 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 170879c882b..7b1103cc6e3 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,8 @@
+2004-09-29 Hans-Peter Nilsson <hp@axis.com>
+
+ * config/cris/cris.md (moverside, movemside): With MEM, make sure
+ the address is (plus reg mem).
+
2004-09-29 David Edelsohn <edelsohn@gnu.org>
* config/rs6000/linux64.h (PROCESSOR_DEFAULT): Define.
diff --git a/gcc/config/cris/cris.md b/gcc/config/cris/cris.md
index 6092d241b73..1e925dbf4ba 100644
--- a/gcc/config/cris/cris.md
+++ b/gcc/config/cris/cris.md
@@ -4904,9 +4904,10 @@
rtx otherop
= rtx_equal_p (operands[2], operands[0]) ? operands[3] : operands[2];
- /* 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))
+ /* Make sure we have canonical RTX so we match the insn pattern -
+ not a constant in the first operand. We also require the order
+ (plus reg mem) to match the final pattern. */
+ if (CONSTANT_P (otherop) || MEM_P (otherop))
{
operands[7] = operands[1];
operands[8] = otherop;
@@ -4954,9 +4955,10 @@
rtx otherop
= rtx_equal_p (operands[2], operands[0]) ? operands[3] : operands[2];
- /* 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))
+ /* Make sure we have canonical RTX so we match the insn pattern -
+ not a constant in the first operand. We also require the order
+ (plus reg mem) to match the final pattern. */
+ if (CONSTANT_P (otherop) || MEM_P (otherop))
{
operands[7] = operands[1];
operands[8] = otherop;