aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorRamana Radhakrishnan <ramana.radhakrishnan@arm.com>2010-09-08 21:35:48 +0000
committerRamana Radhakrishnan <ramana@gcc.gnu.org>2010-09-08 21:35:48 +0000
commit0a7822a32b830084f37e78545047ce0d4e5cd486 (patch)
tree2fb5bfd03faabf6ced00b003e9814012ff8f46b1 /gcc
parent03dbada4fb1c4400d6dc73f18da479b7fb86530f (diff)
downloadgcc-0a7822a32b830084f37e78545047ce0d4e5cd486.zip
gcc-0a7822a32b830084f37e78545047ce0d4e5cd486.tar.gz
gcc-0a7822a32b830084f37e78545047ce0d4e5cd486.tar.bz2
re PR target/44392 (libgcc compile with --enable-target-optspace (-Os) causes recursion in __bswapsi2)
2010-09-08 Ramana Radhakrishnan <ramana.radhakrishnan@arm.com> PR target/44392 * config/arm/arm.md (bswapsi2): Handle condition correctly for armv6 and optimize_size. From-SVN: r164029
Diffstat (limited to 'gcc')
-rw-r--r--gcc/ChangeLog6
-rw-r--r--gcc/config/arm/arm.md43
2 files changed, 25 insertions, 24 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index b909355..c121a35 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,9 @@
+2010-09-08 Ramana Radhakrishnan <ramana.radhakrishnan@arm.com>
+
+ PR target/44392
+ * config/arm/arm.md (bswapsi2): Handle condition correctly
+ for armv6 and optimize_size.
+
2010-09-08 Francois-Xavier Coudert <fxcoudert@gcc.gnu.org>
PR other/18555
diff --git a/gcc/config/arm/arm.md b/gcc/config/arm/arm.md
index 9d98ca5..8806dc5 100644
--- a/gcc/config/arm/arm.md
+++ b/gcc/config/arm/arm.md
@@ -10658,34 +10658,29 @@
(define_expand "bswapsi2"
[(set (match_operand:SI 0 "s_register_operand" "=r")
(bswap:SI (match_operand:SI 1 "s_register_operand" "r")))]
-"TARGET_EITHER"
+"TARGET_EITHER && (arm_arch6 || !optimize_size)"
"
- if (!arm_arch6)
- {
- if (!optimize_size)
- {
- rtx op2 = gen_reg_rtx (SImode);
- rtx op3 = gen_reg_rtx (SImode);
+ if (!arm_arch6)
+ {
+ rtx op2 = gen_reg_rtx (SImode);
+ rtx op3 = gen_reg_rtx (SImode);
- if (TARGET_THUMB)
- {
- rtx op4 = gen_reg_rtx (SImode);
- rtx op5 = gen_reg_rtx (SImode);
+ if (TARGET_THUMB)
+ {
+ rtx op4 = gen_reg_rtx (SImode);
+ rtx op5 = gen_reg_rtx (SImode);
- emit_insn (gen_thumb_legacy_rev (operands[0], operands[1],
- op2, op3, op4, op5));
- }
- else
- {
- emit_insn (gen_arm_legacy_rev (operands[0], operands[1],
- op2, op3));
- }
+ emit_insn (gen_thumb_legacy_rev (operands[0], operands[1],
+ op2, op3, op4, op5));
+ }
+ else
+ {
+ emit_insn (gen_arm_legacy_rev (operands[0], operands[1],
+ op2, op3));
+ }
- DONE;
- }
- else
- FAIL;
- }
+ DONE;
+ }
"
)