* 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.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@167981
138bc75d-0d04-0410-961f-
82ee72b054a4
+2010-12-17 Bernd Schmidt <bernds@codesourcery.com>
+
+ * 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.
+
2010-12-17 Alexander Monakov <amonakov@ispras.ru>
PR middle-end/46761
/* 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),
+2010-12-17 Bernd Schmidt <bernds@codesourcery.com>
+
+ * gcc.c-torture/compile/20101217-1.c: New test.
+
2010-12-17 Alexander Monakov <amonakov@ispras.ru>
PR middle-end/46761
--- /dev/null
+/* Testcase provided by HUAWEI. */
+#include <stdio.h>
+int main()
+{
+ int cur_k;
+ int cur_j=0;
+ int cur_i=28;
+ unsigned char temp_data[8];
+ unsigned int Data_Size=20;
+
+ for (cur_k=0;cur_j<7;cur_j++,cur_i++) {
+ if (cur_j%2==0) {
+ temp_data[cur_k++]=0;
+ }
+ if (cur_k==7) {
+ for (;cur_k>0;cur_k--) {
+ if (cur_k>2) {
+ if ((temp_data[7-cur_k]=='n' || temp_data[7-cur_k]=='N' ) && (temp_data[7-cur_k+1]=='a' || temp_data[7-cur_k+1]=='A' )) {
+ break;
+ }
+ }
+ if (cur_k==1) {
+ if (temp_data[7-cur_k]=='n' || temp_data[7-cur_k]=='N' ) {
+ break;
+ }
+ }
+ }
+ if (cur_k==7) {
+ } else {
+ if (cur_k>0)
+ printf("dfjk");
+ }
+ }
+ }
+return 0;
+}