aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKazu Hirata <kazu@hxi.com>2001-08-29 16:17:25 +0000
committerKazu Hirata <kazu@gcc.gnu.org>2001-08-29 16:17:25 +0000
commit0cb3708d3c36f3344a72b28dc9c81300ce067210 (patch)
tree5dede8e81f343d12f82c1ba1cebaf71f44724952
parentaf592bf91d48c28c2828d46bb5a683ca7bb86af3 (diff)
downloadgcc-0cb3708d3c36f3344a72b28dc9c81300ce067210.zip
gcc-0cb3708d3c36f3344a72b28dc9c81300ce067210.tar.gz
gcc-0cb3708d3c36f3344a72b28dc9c81300ce067210.tar.bz2
h8300.md (anonymous movhi pattern): Don't move (reg n) to (mem (pre_dec (reg n)) (anonymous movsi pattern): Likewise.
* h8300.md (anonymous movhi pattern): Don't move (reg n) to (mem (pre_dec (reg n)) (anonymous movsi pattern): Likewise. From-SVN: r45266
-rw-r--r--gcc/ChangeLog6
-rw-r--r--gcc/config/h8300/h8300.md14
2 files changed, 18 insertions, 2 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 796b208..86f674e 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,5 +1,11 @@
2001-08-29 Kazu Hirata <kazu@hxi.com>
+ * h8300.md (anonymous movhi pattern): Don't move (reg n) to
+ (mem (pre_dec (reg n))
+ (anonymous movsi pattern): Likewise.
+
+2001-08-29 Kazu Hirata <kazu@hxi.com>
+
* h8300.h (RETURN_ADDR_RTX): New.
2001-08-29 Kazu Hirata <kazu@hxi.com>
diff --git a/gcc/config/h8300/h8300.md b/gcc/config/h8300/h8300.md
index 216524e..b8a9b5e 100644
--- a/gcc/config/h8300/h8300.md
+++ b/gcc/config/h8300/h8300.md
@@ -175,7 +175,12 @@
(match_operand:HI 1 "general_operand_src" "I,r>,r,i,m,r"))]
"TARGET_H8300
&& (register_operand (operands[0],HImode)
- || register_operand (operands[1], HImode))"
+ || register_operand (operands[1], HImode))
+ && !(GET_CODE (operands[0]) == MEM
+ && GET_CODE (XEXP (operands[0], 0)) == PRE_DEC
+ && GET_CODE (XEXP (XEXP (operands[0], 0), 0)) == REG
+ && GET_CODE (operands[1]) == REG
+ && REGNO (XEXP (XEXP (operands[0], 0), 0)) == REGNO (operands[1]))"
"@
sub.w %T0,%T0
mov.w %T1,%T0
@@ -404,7 +409,12 @@
(match_operand:SI 1 "general_operand_src" "I,r,i,m,r,r,>,I,r,*a"))]
"(TARGET_H8300S || TARGET_H8300H)
&& (register_operand (operands[0], SImode)
- || register_operand (operands[1], SImode))"
+ || register_operand (operands[1], SImode))
+ && !(GET_CODE (operands[0]) == MEM
+ && GET_CODE (XEXP (operands[0], 0)) == PRE_DEC
+ && GET_CODE (XEXP (XEXP (operands[0], 0), 0)) == REG
+ && GET_CODE (operands[1]) == REG
+ && REGNO (XEXP (XEXP (operands[0], 0), 0)) == REGNO (operands[1]))"
"*
{
switch (which_alternative)