diff options
author | Richard Earnshaw <rearnsha@arm.com> | 2007-06-23 18:07:04 +0000 |
---|---|---|
committer | Richard Earnshaw <rearnsha@gcc.gnu.org> | 2007-06-23 18:07:04 +0000 |
commit | 630ef467a860ff6db6bba710fd46700f4f363496 (patch) | |
tree | b68a85a5e9d12adb9ebdd8e00c3cda46873ff7e3 /gcc/config | |
parent | 6cad985925701132aac4e9778ade570fac1ad2b0 (diff) | |
download | gcc-630ef467a860ff6db6bba710fd46700f4f363496.zip gcc-630ef467a860ff6db6bba710fd46700f4f363496.tar.gz gcc-630ef467a860ff6db6bba710fd46700f4f363496.tar.bz2 |
re PR target/31152 (-(x>y) generates wrong code)
PR target/31152
* arm.md (negscc): Match the correct operand for optimized LT0 test.
Remove optimization for GT.
*gcc.c-torture/execute/20070623-1.c: New.
From-SVN: r125973
Diffstat (limited to 'gcc/config')
-rw-r--r-- | gcc/config/arm/arm.md | 5 |
1 files changed, 1 insertions, 4 deletions
diff --git a/gcc/config/arm/arm.md b/gcc/config/arm/arm.md index 664f23d..5a8774e 100644 --- a/gcc/config/arm/arm.md +++ b/gcc/config/arm/arm.md @@ -9423,15 +9423,12 @@ (clobber (reg:CC CC_REGNUM))] "TARGET_ARM" "* - if (GET_CODE (operands[3]) == LT && operands[3] == const0_rtx) + if (GET_CODE (operands[3]) == LT && operands[2] == const0_rtx) return \"mov\\t%0, %1, asr #31\"; if (GET_CODE (operands[3]) == NE) return \"subs\\t%0, %1, %2\;mvnne\\t%0, #0\"; - if (GET_CODE (operands[3]) == GT) - return \"subs\\t%0, %1, %2\;mvnne\\t%0, %0, asr #31\"; - output_asm_insn (\"cmp\\t%1, %2\", operands); output_asm_insn (\"mov%D3\\t%0, #0\", operands); return \"mvn%d3\\t%0, #0\"; |