OSDN Git Service

PR target/43742
authorbernds <bernds@138bc75d-0d04-0410-961f-82ee72b054a4>
Thu, 15 Apr 2010 08:57:27 +0000 (08:57 +0000)
committerbernds <bernds@138bc75d-0d04-0410-961f-82ee72b054a4>
Thu, 15 Apr 2010 08:57:27 +0000 (08:57 +0000)
* config/sh/sh.md (doloop_end_split, dect): Undo previous patch.  Use
matching constraints to ensure inputs match the output.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@158367 138bc75d-0d04-0410-961f-82ee72b054a4

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

index a49e6b1..2f22438 100644 (file)
@@ -1,3 +1,9 @@
+2010-04-15  Bernd Schmidt  <bernd.schmidt@codesourcery.com>
+
+       PR target/43742
+       * config/sh/sh.md (doloop_end_split, dect): Undo previous patch.  Use
+       matching constraints to ensure inputs match the output.
+
 2010-04-15  Kaz Kojima  <kkojima@gcc.gnu.org>
 
        PR target/43742
index aa0b449..485c038 100644 (file)
@@ -7050,22 +7050,21 @@ label:
 
 (define_insn_and_split "doloop_end_split"
   [(set (pc)
-       (if_then_else (ne:SI (match_operand:SI 0 "arith_reg_dest" "")
+       (if_then_else (ne:SI  (match_operand:SI 2 "arith_reg_dest" "0")
                          (const_int 1))
                      (label_ref (match_operand 1 "" ""))
                      (pc)))
-   (set (match_dup 0)
-       (plus (match_dup 0) (const_int -1)))
+   (set (match_operand:SI 0 "arith_reg_dest" "=r")
+       (plus (match_dup 2) (const_int -1)))
    (clobber (reg:SI T_REG))]
   "TARGET_SH2"
   "#"
   ""
   [(parallel [(set (reg:SI T_REG)
-                  (eq:SI (match_operand:SI 0 "arith_reg_dest" "+r")
-                         (const_int 1)))
-             (set (match_dup 0) (plus:SI (match_dup 0) (const_int -1)))])
+                  (eq:SI (match_dup 2) (const_int 1)))
+             (set (match_dup 0) (plus:SI (match_dup 2) (const_int -1)))])
    (set (pc) (if_then_else (eq (reg:SI T_REG) (const_int 0))
-                          (label_ref (match_operand 1 "" ""))
+                          (label_ref (match_dup 1))
                           (pc)))]
 ""
    [(set_attr "type" "cbranch")])
@@ -8308,8 +8307,9 @@ label:
 
 (define_insn "dect"
   [(set (reg:SI T_REG)
-       (eq:SI (match_operand:SI 0 "arith_reg_dest" "+r") (const_int 1)))
-   (set (match_dup 0) (plus:SI (match_dup 0) (const_int -1)))]
+       (eq:SI (match_operand:SI 1 "arith_reg_dest" "0") (const_int 1)))
+   (set (match_operand:SI 0 "arith_reg_dest" "=r")
+       (plus:SI (match_dup 1) (const_int -1)))]
   "TARGET_SH2"
   "dt  %0"
   [(set_attr "type" "arith")])