aboutsummaryrefslogtreecommitdiff
path: root/4.5.2
diff options
context:
space:
mode:
authorRyan Hill <rhill@gentoo.org>2011-02-13 07:54:42 +0000
committerRyan Hill <rhill@gentoo.org>2011-02-13 07:54:42 +0000
commit259f5fd9aae4a86e5dc63de00c92e8da481c2481 (patch)
treea0148c59db2b119732dbabd11aaac4c4aa4c194b /4.5.2
parentRelease 4.4.4 p1.4. (diff)
downloadgcc-patches-259f5fd9aae4a86e5dc63de00c92e8da481c2481.tar.gz
gcc-patches-259f5fd9aae4a86e5dc63de00c92e8da481c2481.tar.bz2
gcc-patches-259f5fd9aae4a86e5dc63de00c92e8da481c2481.zip
Backport patch for PR45094 (bug #352064).
Diffstat (limited to '4.5.2')
-rw-r--r--4.5.2/gentoo/22_all_4.6_arm_pr45094-dword-move.patch54
-rw-r--r--4.5.2/gentoo/README.history1
2 files changed, 55 insertions, 0 deletions
diff --git a/4.5.2/gentoo/22_all_4.6_arm_pr45094-dword-move.patch b/4.5.2/gentoo/22_all_4.6_arm_pr45094-dword-move.patch
new file mode 100644
index 0000000..50cfb37
--- /dev/null
+++ b/4.5.2/gentoo/22_all_4.6_arm_pr45094-dword-move.patch
@@ -0,0 +1,54 @@
+Backport from 4.6
+
+http://gcc.gnu.org/PR45094
+https://bugs.gentoo.org/352064
+
+--- a/gcc/config/arm/arm.c
++++ b/gcc/config/arm/arm.c
+@@ -12182,13 +12182,13 @@ output_move_double (rtx *operands)
+ {
+ if (GET_CODE (XEXP (operands[0], 0)) == PRE_MODIFY)
+ {
+- output_asm_insn ("ldr%?\t%0, [%1, %2]!", otherops);
+- output_asm_insn ("ldr%?\t%H0, [%1, #4]", otherops);
++ output_asm_insn ("str%?\t%0, [%1, %2]!", otherops);
++ output_asm_insn ("str%?\t%H0, [%1, #4]", otherops);
+ }
+ else
+ {
+- output_asm_insn ("ldr%?\t%H0, [%1, #4]", otherops);
+- output_asm_insn ("ldr%?\t%0, [%1], %2", otherops);
++ output_asm_insn ("str%?\t%H0, [%1, #4]", otherops);
++ output_asm_insn ("str%?\t%0, [%1], %2", otherops);
+ }
+ }
+ else if (GET_CODE (XEXP (operands[0], 0)) == PRE_MODIFY)
+--- /dev/null
++++ b/gcc/testsuite/gcc.target/arm/pr45094.c
+@@ -0,0 +1,26 @@
++/* { dg-do run } */
++/* { dg-require-effective-target arm_neon_hw } */
++/* { dg-options "-O2 -mcpu=cortex-a8 -mfpu=neon -mfloat-abi=softfp" } */
++
++#include <stdlib.h>
++
++long long buffer[32];
++
++void __attribute__((noinline)) f(long long *p, int n)
++{
++ while (--n >= 0)
++ {
++ *p = 1;
++ p += 32;
++ }
++}
++
++int main(void)
++{
++ f(buffer, 1);
++
++ if (!buffer[0])
++ abort();
++
++ return 0;
++}
diff --git a/4.5.2/gentoo/README.history b/4.5.2/gentoo/README.history
index d4e485e..9ecb2ef 100644
--- a/4.5.2/gentoo/README.history
+++ b/4.5.2/gentoo/README.history
@@ -1,4 +1,5 @@
1.1 pending
+ + 22_all_4.6_arm_pr45094-dword-move.patch
+ 99_all_testsuite-01-Wformat.patch
+ 99_all_testsuite-02-Wtrampolines.patch