From 36019c19aafb03fbb2c74c4fbae74d196b953c76 Mon Sep 17 00:00:00 2001 From: Stuart Henderson Date: Mon, 2 May 2011 17:01:01 +0000 Subject: [PATCH] re PR target/47951 (web.c:union_match_dups segmentation fault for bfin) 2011-05-02 Stuart Henderson PR target/47951 * config/bfin/bfin.md (loop_end): Use matching constraints to ensure inputs match the output. From-SVN: r173261 --- gcc/ChangeLog | 6 ++++++ gcc/config/bfin/bfin.md | 8 ++++---- 2 files changed, 10 insertions(+), 4 deletions(-) diff --git a/gcc/ChangeLog b/gcc/ChangeLog index c215d6b46ce..114de895b4d 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,9 @@ +2011-05-02 Stuart Henderson + + PR target/47951 + * config/bfin/bfin.md (loop_end): Use matching constraints to ensure + inputs match the output. + 2011-05-02 Andreas Schwab PR target/47955 diff --git a/gcc/config/bfin/bfin.md b/gcc/config/bfin/bfin.md index 3fac01ca564..4d22df5d20f 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 */ -- 2.30.2