From b3374f14937dbffb6a40e79200222b834ad41d02 Mon Sep 17 00:00:00 2001
From: Hans-Peter Nilsson <hp@axis.com>
Date: Tue, 8 May 2012 15:20:52 +0000
Subject: [PATCH] re PR target/53272 (wrong condition-codes for strict-low-part
 destination and small-integer source)

	PR target/53272
	* config/cris/cris.c (cris_normal_notice_update_cc): For TARGET_V32,
	when a constant source operand matches an "I" constraint, the "no
	CC0 change" applies to a register-destination only, not a
	strict_low_part-destination.

From-SVN: r187283
---
 gcc/ChangeLog          | 8 ++++++++
 gcc/config/cris/cris.c | 1 +
 2 files changed, 9 insertions(+)

diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index b71e988e1003..4867d5dc5a44 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,11 @@
+2012-05-08  Hans-Peter Nilsson  <hp@axis.com>
+
+	PR target/53272
+	* config/cris/cris.c (cris_normal_notice_update_cc): For TARGET_V32,
+	when a constant source operand matches an "I" constraint, the "no
+	CC0 change" applies to a register-destination only, not a
+	strict_low_part-destination.
+
 2012-05-08  Richard Guenther  <rguenther@suse.de>
 
 	* fold-const.c (fold_binary_loc): Fold (X * CST1) & CST2
diff --git a/gcc/config/cris/cris.c b/gcc/config/cris/cris.c
index 40efd233ebfd..349f6019e3e9 100644
--- a/gcc/config/cris/cris.c
+++ b/gcc/config/cris/cris.c
@@ -1695,6 +1695,7 @@ cris_normal_notice_update_cc (rtx exp, rtx insn)
 		       && (REGNO (SET_SRC (exp))
 			   > CRIS_LAST_GENERAL_REGISTER))
 		   || (TARGET_V32
+		       && REG_P (SET_DEST (exp))
 		       && satisfies_constraint_I (SET_SRC (exp))))
 	    {
 	      /* There's no CC0 change for this case.  Just check
-- 
GitLab