From 3ce87c69f54c8ab7a3d5a87dd455fa0ebde3bf37 Mon Sep 17 00:00:00 2001 From: kazu Date: Wed, 29 Aug 2001 16:17:25 +0000 Subject: [PATCH] * h8300.md (anonymous movhi pattern): Don't move (reg n) to (mem (pre_dec (reg n)) (anonymous movsi pattern): Likewise. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@45266 138bc75d-0d04-0410-961f-82ee72b054a4 --- gcc/ChangeLog | 6 ++++++ gcc/config/h8300/h8300.md | 14 ++++++++++++-- 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 + * 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 + * h8300.h (RETURN_ADDR_RTX): New. 2001-08-29 Kazu Hirata 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) -- 2.7.4