diff options
-rw-r--r-- | meta/recipes-devtools/gcc/gcc-4.5.1.inc | 1 | ||||
-rw-r--r-- | meta/recipes-devtools/gcc/gcc-4.5.1/pr45094.patch | 75 |
2 files changed, 76 insertions, 0 deletions
diff --git a/meta/recipes-devtools/gcc/gcc-4.5.1.inc b/meta/recipes-devtools/gcc/gcc-4.5.1.inc index e84df8208..2473775fc 100644 --- a/meta/recipes-devtools/gcc/gcc-4.5.1.inc +++ b/meta/recipes-devtools/gcc/gcc-4.5.1.inc @@ -61,6 +61,7 @@ SRC_URI = "${GNU_MIRROR}/gcc/gcc-${PV}/gcc-${PV}.tar.bz2 \ file://pr43810.patch \ file://pr44290.patch \ file://pr44606.patch \ + file://pr45094.patch \ " SRC_URI_append_sh3 = " file://sh3-installfix-fixheaders.patch;patch=1 " diff --git a/meta/recipes-devtools/gcc/gcc-4.5.1/pr45094.patch b/meta/recipes-devtools/gcc/gcc-4.5.1/pr45094.patch new file mode 100644 index 000000000..182e0055d --- /dev/null +++ b/meta/recipes-devtools/gcc/gcc-4.5.1/pr45094.patch @@ -0,0 +1,75 @@ +From 34bd4baaa0f6583f9ff99544c732350c199ec0e2 Mon Sep 17 00:00:00 2001 +From: qiyao <qiyao@138bc75d-0d04-0410-961f-82ee72b054a4> +Date: Wed, 18 Aug 2010 12:33:43 +0000 +Subject: [PATCH 4/6] gcc/ PR target/45094 * config/arm/arm.c (output_move_double): Fix typo generating instructions ('ldr'->'str'). + +gcc/testsuite/ + + PR target/45094 + * gcc.target/arm/pr45094.c: New test. + +git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@163338 138bc75d-0d04-0410-961f-82ee72b054a4 +--- + gcc/config/arm/arm.c | 8 ++++---- + gcc/testsuite/gcc.target/arm/pr45094.c | 27 +++++++++++++++++++++++++++ + 2 files changed, 31 insertions(+), 4 deletions(-) + create mode 100644 gcc/testsuite/gcc.target/arm/pr45094.c + +diff --git a/gcc/config/arm/arm.c b/gcc/config/arm/arm.c +index a06a38b..0382b24 100644 +--- 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) +diff --git a/gcc/testsuite/gcc.target/arm/pr45094.c b/gcc/testsuite/gcc.target/arm/pr45094.c +new file mode 100644 +index 0000000..05f16d8 +--- /dev/null ++++ b/gcc/testsuite/gcc.target/arm/pr45094.c +@@ -0,0 +1,27 @@ ++/* { dg-do run } */ ++/* { dg-require-effective-target arm_neon_hw } */ ++/* { dg-options "-O2 -mcpu=cortex-a8" } */ ++/* { dg-add-options arm_neon } */ ++ ++#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; ++} +-- +1.7.4 + |