aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorStuart Henderson <shenders@gcc.gnu.org>2011-05-02 17:01:01 +0000
committerStuart Henderson <shenders@gcc.gnu.org>2011-05-02 17:01:01 +0000
commit36019c19aafb03fbb2c74c4fbae74d196b953c76 (patch)
tree3be47b1f2f3922172e43487b1894c9f784eec8a3 /gcc
parentf69ea688b02c207333c208af8eeae69de23d40ab (diff)
downloadgcc-36019c19aafb03fbb2c74c4fbae74d196b953c76.zip
gcc-36019c19aafb03fbb2c74c4fbae74d196b953c76.tar.gz
gcc-36019c19aafb03fbb2c74c4fbae74d196b953c76.tar.bz2
re PR target/47951 (web.c:union_match_dups segmentation fault for bfin)
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
Diffstat (limited to 'gcc')
-rw-r--r--gcc/ChangeLog6
-rw-r--r--gcc/config/bfin/bfin.md8
2 files changed, 10 insertions, 4 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index c215d6b..114de89 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -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
diff --git a/gcc/config/bfin/bfin.md b/gcc/config/bfin/bfin.md
index 3fac01c..4d22df5 100644
--- a/gcc/config/bfin/bfin.md
+++ b/gcc/config/bfin/bfin.md
@@ -1961,15 +1961,15 @@
(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 */