aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorJ"orn Rennecke <amylaar@cygnus.co.uk>1999-03-16 15:47:06 +0000
committerJoern Rennecke <amylaar@gcc.gnu.org>1999-03-16 15:47:06 +0000
commit3ca0a5247e4180390d82b28433f16a98dbcdb00d (patch)
treecd2cbf3de58338577503bacb7614ec0b85da7a5b /gcc
parentbbecc1d6a762c1da720573b1a95848c545c2ec27 (diff)
downloadgcc-3ca0a5247e4180390d82b28433f16a98dbcdb00d.zip
gcc-3ca0a5247e4180390d82b28433f16a98dbcdb00d.tar.gz
gcc-3ca0a5247e4180390d82b28433f16a98dbcdb00d.tar.bz2
* sh.md (movsi_i): Move t/r alternative after r/rI alternative.
From-SVN: r25804
Diffstat (limited to 'gcc')
-rw-r--r--gcc/ChangeLog4
-rw-r--r--gcc/config/sh/sh.md13
2 files changed, 11 insertions, 6 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index bca2a6c..609f7d3 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,7 @@
+Tue Mar 16 23:40:09 1999 J"orn Rennecke <amylaar@cygnus.co.uk>
+
+ * sh.md (movsi_i): Move t/r alternative after r/rI alternative.
+
Tue Mar 16 13:44:50 1999 Jim Wilson <wilson@cygnus.com>
* mn10200/mn10200.md (addsi3, subsi3, ashlsi3, lshrsi3, ashrsi3):
diff --git a/gcc/config/sh/sh.md b/gcc/config/sh/sh.md
index a3b8e91..f572d6f 100644
--- a/gcc/config/sh/sh.md
+++ b/gcc/config/sh/sh.md
@@ -2143,19 +2143,20 @@
""
"sett")
-;; t/r is first, so that it will be preferred over r/r when reloading a move
-;; of a pseudo-reg into the T reg
+;; t/r must come after r/r, lest reload will try to reload stuff like
+;; (set (subreg:SI (mem:QI (plus:SI (reg:SI 15 r15) (const_int 12)) 0) 0)
+;; (made from (set (subreg:SI (reg:QI 73) 0) ) into T.
(define_insn "movsi_i"
- [(set (match_operand:SI 0 "general_movdst_operand" "=t,r,r,r,r,r,m,<,<,xl,x,l,r")
- (match_operand:SI 1 "general_movsrc_operand" "r,Q,rI,mr,xl,t,r,x,l,r,>,>,i"))]
+ [(set (match_operand:SI 0 "general_movdst_operand" "=r,r,t,r,r,r,m,<,<,xl,x,l,r")
+ (match_operand:SI 1 "general_movsrc_operand" "Q,rI,r,mr,xl,t,r,x,l,r,>,>,i"))]
"
! TARGET_SH3E
&& (register_operand (operands[0], SImode)
|| register_operand (operands[1], SImode))"
"@
- cmp/pl %1
mov.l %1,%0
mov %1,%0
+ cmp/pl %1
mov.l %1,%0
sts %1,%0
movt %0
@@ -2166,7 +2167,7 @@
lds.l %1,%0
lds.l %1,%0
fake %1,%0"
- [(set_attr "type" "*,pcload_si,move,load_si,move,move,store,store,pstore,move,load,pload,pcload_si")
+ [(set_attr "type" "pcload_si,move,*,load_si,move,move,store,store,pstore,move,load,pload,pcload_si")
(set_attr "length" "*,*,*,*,*,*,*,*,*,*,*,*,*")])
;; t/r must come after r/r, lest reload will try to reload stuff like