re PR target/47951 (web.c:union_match_dups segmentation fault for bfin)
authorStuart Henderson <shenders@gcc.gnu.org>
Mon, 2 May 2011 17:01:01 +0000 (17:01 +0000)
committerStuart Henderson <shenders@gcc.gnu.org>
Mon, 2 May 2011 17:01:01 +0000 (17:01 +0000)
2011-05-02  Stuart Henderson  <shenders@gcc.gnu.org>

        PR target/47951
        * config/bfin/bfin.md (loop_end): Use matching constraints to ensure
        inputs match the output.

From-SVN: r173261

gcc/ChangeLog
gcc/config/bfin/bfin.md

index c215d6b46ce9ddf0d2dad24ba0ca952b6983d411..114de895b4dd8cf8aeb2ec603ad5045d3e0b37c4 100644 (file)
@@ -1,3 +1,9 @@
+2011-05-02  Stuart Henderson  <shenders@gcc.gnu.org>
+
+        PR target/47951
+        * config/bfin/bfin.md (loop_end): Use matching constraints to ensure
+        inputs match the output.
+
 2011-05-02  Andreas Schwab  <schwab@linux-m68k.org>
 
        PR target/47955
index 3fac01ca564669fd77ac7f7856ee54e6aac8459b..4d22df5d20f5d6324260873c6c5bff4501516bb5 100644 (file)
 
 (define_insn "loop_end"
   [(set (pc)
-       (if_then_else (ne (match_operand:SI 0 "nonimmediate_operand" "+a*d,*b*v*f,m")
+       (if_then_else (ne (match_operand:SI 2 "nonimmediate_operand" "0,0,0")
                          (const_int 1))
                      (label_ref (match_operand 1 "" ""))
                      (pc)))
-   (set (match_dup 0)
-       (plus (match_dup 0)
+   (set (match_operand:SI 0 "nonimmediate_operand" "=a*d,*b*v*f,m")
+       (plus (match_dup 2)
              (const_int -1)))
    (unspec [(const_int 0)] UNSPEC_LSETUP_END)
-   (clobber (match_scratch:SI 2 "=X,&r,&r"))]
+   (clobber (match_scratch:SI 3 "=X,&r,&r"))]
   ""
   "@
    /* loop end %0 %l1 */