aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorRichard Earnshaw <rearnsha@arm.com>2009-06-03 23:31:12 +0000
committerRichard Earnshaw <rearnsha@gcc.gnu.org>2009-06-03 23:31:12 +0000
commite63d4106ade2e93a1472f010415b5b17d567b66b (patch)
treec06be932154f53a9fcee016b9010fe6559ef9dca /gcc
parent0c40d2340abd3c04b3134c0719dbfc79ee871209 (diff)
downloadgcc-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/ChangeLog8
-rw-r--r--gcc/config/arm/arm.md7
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,