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
This commit is contained in:
parent
8b432c8b83
commit
4d5d65862a
4 changed files with 48 additions and 0 deletions
|
@ -1,3 +1,9 @@
|
|||
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
|
||||
|
|
|
@ -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),
|
||||
|
|
|
@ -1,3 +1,7 @@
|
|||
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
|
||||
|
|
36
gcc/testsuite/gcc.c-torture/compile/20101217-1.c
Normal file
36
gcc/testsuite/gcc.c-torture/compile/20101217-1.c
Normal file
|
@ -0,0 +1,36 @@
|
|||
/* 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;
|
||||
}
|
Loading…
Add table
Reference in a new issue