h8300.md (anonymous movhi pattern): Don't move (reg n) to (mem (pre_dec (reg n))...
authorKazu Hirata <kazu@hxi.com>
Wed, 29 Aug 2001 16:17:25 +0000 (16:17 +0000)
committerKazu Hirata <kazu@gcc.gnu.org>
Wed, 29 Aug 2001 16:17:25 +0000 (16:17 +0000)
* h8300.md (anonymous movhi pattern): Don't move (reg n) to
(mem (pre_dec (reg n))
(anonymous movsi pattern): Likewise.

From-SVN: r45266

gcc/ChangeLog
gcc/config/h8300/h8300.md

index 796b2080944d453c03b34d7c460520f3b373e987..86f674efd7de52101e3e680ea67a5753bf7f58c4 100644 (file)
@@ -1,3 +1,9 @@
+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.
index 216524ec070f277cf6a2283893e5f51079931289..b8a9b5e0a9942336ed37de23b5e9133f82ffc042 100644 (file)
        (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
        (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)