* sh.md (movsi_i): Move t/r alternative after r/rI alternative.
authorJ"orn Rennecke <amylaar@cygnus.co.uk>
Tue, 16 Mar 1999 15:47:06 +0000 (15:47 +0000)
committerJoern Rennecke <amylaar@gcc.gnu.org>
Tue, 16 Mar 1999 15:47:06 +0000 (15:47 +0000)
From-SVN: r25804

gcc/ChangeLog
gcc/config/sh/sh.md

index bca2a6cb3231e23c9223383edcc8ca06862a1d8d..609f7d3cf563ad37f563bfde5e963389162fc5c3 100644 (file)
@@ -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):
index a3b8e9142a9594231fa048ae65fe76c4774d3d5c..f572d6f343dfa4571296bbed660969725c23bc53 100644 (file)
   ""
   "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
        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