76 lines
2.1 KiB
Diff
76 lines
2.1 KiB
Diff
|
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
|
||
|
|