diff options
author | 2011-02-13 07:54:42 +0000 | |
---|---|---|
committer | 2011-02-13 07:54:42 +0000 | |
commit | 259f5fd9aae4a86e5dc63de00c92e8da481c2481 (patch) | |
tree | a0148c59db2b119732dbabd11aaac4c4aa4c194b /4.5.2 | |
parent | Release 4.4.4 p1.4. (diff) | |
download | gcc-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.patch | 54 | ||||
-rw-r--r-- | 4.5.2/gentoo/README.history | 1 |
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 |