aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorHans-Peter Nilsson <hp@axis.com>2009-10-12 17:37:48 +0000
committerHans-Peter Nilsson <hp@gcc.gnu.org>2009-10-12 17:37:48 +0000
commit365cacbf41bb541ca5e6fef293dbd46f10a508ff (patch)
tree70b6222014e4367fdb68273634371fcf3b0cdad5
parentaf672ec108a84f412bce43095192146615d6bae6 (diff)
downloadgcc-365cacbf41bb541ca5e6fef293dbd46f10a508ff.zip
gcc-365cacbf41bb541ca5e6fef293dbd46f10a508ff.tar.gz
gcc-365cacbf41bb541ca5e6fef293dbd46f10a508ff.tar.bz2
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
-rw-r--r--gcc/ChangeLog6
-rw-r--r--gcc/config/cris/cris.md6
2 files changed, 10 insertions, 2 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 0714158..7b6c080 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,9 @@
+2009-10-12 Hans-Peter Nilsson <hp@axis.com>
+
+ 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 <stefan@codeweavers.com>
* config/i386/i386.md (vswapmov): New.
diff --git a/gcc/config/cris/cris.md b/gcc/config/cris/cris.md
index 79eb8da..bd14a16 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))]