aboutsummaryrefslogtreecommitdiff
path: root/gcc/config
diff options
context:
space:
mode:
authorBernd Schmidt <bernds@codesourcery.com>2010-12-17 13:48:40 +0000
committerBernd Schmidt <bernds@gcc.gnu.org>2010-12-17 13:48:40 +0000
commit4d5d65862a2a7d54abfee98d94aa2cb536b3d9ff (patch)
tree3c8a3b8b43afe876ae2f238034721d94b4eb4a78 /gcc/config
parent8b432c8b8323a67de0ac1c4fce32b80a6eaef9be (diff)
downloadgcc-4d5d65862a2a7d54abfee98d94aa2cb536b3d9ff.zip
gcc-4d5d65862a2a7d54abfee98d94aa2cb536b3d9ff.tar.gz
gcc-4d5d65862a2a7d54abfee98d94aa2cb536b3d9ff.tar.bz2
arm.c (arm_select_cc_mode): Before calling arm_select_dominance_cc_mode for AND or IOR operations...
gcc/ * config/arm/arm.c (arm_select_cc_mode): Before calling arm_select_dominance_cc_mode for AND or IOR operations, ensure that op is NE or EQ. gcc/testsuite/ * gcc.c-torture/compile/20101217-1.c: New test. From-SVN: r167981
Diffstat (limited to 'gcc/config')
-rw-r--r--gcc/config/arm/arm.c2
1 files changed, 2 insertions, 0 deletions
diff --git a/gcc/config/arm/arm.c b/gcc/config/arm/arm.c
index 21fc256..2bfdd9f 100644
--- a/gcc/config/arm/arm.c
+++ b/gcc/config/arm/arm.c
@@ -10602,12 +10602,14 @@ arm_select_cc_mode (enum rtx_code op, rtx x, rtx y)
/* Alternate canonicalizations of the above. These are somewhat cleaner. */
if (GET_CODE (x) == AND
+ && (op == EQ || op == NE)
&& COMPARISON_P (XEXP (x, 0))
&& COMPARISON_P (XEXP (x, 1)))
return arm_select_dominance_cc_mode (XEXP (x, 0), XEXP (x, 1),
DOM_CC_X_AND_Y);
if (GET_CODE (x) == IOR
+ && (op == EQ || op == NE)
&& COMPARISON_P (XEXP (x, 0))
&& COMPARISON_P (XEXP (x, 1)))
return arm_select_dominance_cc_mode (XEXP (x, 0), XEXP (x, 1),