diff options
author | Richard Earnshaw <rearnsha@arm.com> | 2009-06-03 23:31:12 +0000 |
---|---|---|
committer | Richard Earnshaw <rearnsha@gcc.gnu.org> | 2009-06-03 23:31:12 +0000 |
commit | e63d4106ade2e93a1472f010415b5b17d567b66b (patch) | |
tree | c06be932154f53a9fcee016b9010fe6559ef9dca /gcc | |
parent | 0c40d2340abd3c04b3134c0719dbfc79ee871209 (diff) | |
download | gcc-e63d4106ade2e93a1472f010415b5b17d567b66b.zip gcc-e63d4106ade2e93a1472f010415b5b17d567b66b.tar.gz gcc-e63d4106ade2e93a1472f010415b5b17d567b66b.tar.bz2 |
re PR target/10242 ([ARM] subsequent use of plus and minus operators could be improved)
PR target/10242
* arm.md (arm_addsi3): Don't try to split an add with an
eliminable register until after reload has completed.
From-SVN: r148156
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/ChangeLog | 8 | ||||
-rw-r--r-- | gcc/config/arm/arm.md | 7 |
2 files changed, 11 insertions, 4 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index c2cac32..997ec41 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,9 @@ +2009-06-04 Richard Earnshaw <rearnsha@arm.com> + + PR target/10242 + * arm.md (arm_addsi3): Don't try to split an add with an + eliminable register until after reload has completed. + 2009-06-03 Ian Lance Taylor <iant@google.com> * dummy-checksum.c (executable_checksum): Use EXPORTED_CONST. @@ -225,7 +231,7 @@ * arm.c (arm_get_frame_offsets): Prefer using r3 for padding a push/pop multiple to 8-byte alignment. - + 2009-06-01 Jakub Jelinek <jakub@redhat.com> * config/i386/i386.c (queued_cfa_restores): New static variable. diff --git a/gcc/config/arm/arm.md b/gcc/config/arm/arm.md index de78d28..5f3a5e0 100644 --- a/gcc/config/arm/arm.md +++ b/gcc/config/arm/arm.md @@ -620,10 +620,11 @@ sub%?\\t%0, %1, #%n2 sub%?\\t%0, %1, #%n2 #" - "TARGET_32BIT && - GET_CODE (operands[2]) == CONST_INT + "TARGET_32BIT + && GET_CODE (operands[2]) == CONST_INT && !(const_ok_for_arm (INTVAL (operands[2])) - || const_ok_for_arm (-INTVAL (operands[2])))" + || const_ok_for_arm (-INTVAL (operands[2]))) + && (reload_completed || !arm_eliminable_register (operands[1]))" [(clobber (const_int 0))] " arm_split_constant (PLUS, SImode, curr_insn, |