From 365cacbf41bb541ca5e6fef293dbd46f10a508ff Mon Sep 17 00:00:00 2001 From: Hans-Peter Nilsson Date: Mon, 12 Oct 2009 17:37:48 +0000 Subject: [PATCH] re PR target/26515 (peephole2 causes unrecognized insn, zero_extending non-general register) PR target/26515 * config/cris/cris.md (andu): Check that operand 1 is one of the general registers. Fix typo in head comment. From-SVN: r152676 --- gcc/ChangeLog | 6 ++++++ gcc/config/cris/cris.md | 6 ++++-- 2 files changed, 10 insertions(+), 2 deletions(-) diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 0714158ea99..7b6c0800795 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,9 @@ +2009-10-12 Hans-Peter Nilsson + + PR target/26515 + * config/cris/cris.md (andu): Check that operand 1 is one of the + general registers. Fix typo in head comment. + 2009-10-12 Stefan Dösinger * config/i386/i386.md (vswapmov): New. diff --git a/gcc/config/cris/cris.md b/gcc/config/cris/cris.md index 79eb8da3b0d..bd14a16337e 100644 --- a/gcc/config/cris/cris.md +++ b/gcc/config/cris/cris.md @@ -4936,7 +4936,7 @@ ;; It should be: ;; movu.b some_byte,reg_32 ;; and.b const,reg_32 -;; but is turns into: +;; but it turns into: ;; move.b some_byte,reg_32 ;; and.d const,reg_32 ;; Fix it here. @@ -4953,7 +4953,9 @@ "REGNO (operands[2]) == REGNO (operands[0]) && INTVAL (operands[3]) <= 65535 && INTVAL (operands[3]) >= 0 && !CRIS_CONST_OK_FOR_LETTER_P (INTVAL (operands[3]), 'I') - && !side_effects_p (operands[1])" + && !side_effects_p (operands[1]) + && (!REG_P (operands[1]) + || REGNO (operands[1]) <= CRIS_LAST_GENERAL_REGISTER)" ;; FIXME: CC0 valid except for M (i.e. CC_NOT_NEGATIVE). [(set (match_dup 0) (match_dup 4)) (set (match_dup 5) (match_dup 6))]