This is the mail archive of the
gcc-patches@gcc.gnu.org
mailing list for the GCC project.
Re: [patch, arm] Backport PR45094 fix to 4.5
- From: Yao Qi <yao at codesourcery dot com>
- To: gcc-patches at gcc dot gnu dot org
- Date: Tue, 28 Dec 2010 09:43:03 +0800
- Subject: Re: [patch, arm] Backport PR45094 fix to 4.5
- References: <4D184B17.1030106@codesourcery.com>
On 12/27/2010 04:15 PM, Yao Qi wrote:
> --- config/arm/arm.c (revision 167948)
> +++ config/arm/arm.c (working copy)
> @@ -1114,6 +1114,7 @@
> va_list_type);
> DECL_ARTIFICIAL (va_list_name) = 1;
> TYPE_NAME (va_list_type) = va_list_name;
> + TYPE_STUB_DECL (va_list_type) = va_list_name;
> /* Create the __ap field. */
> ap_field = build_decl (BUILTINS_LOCATION,
> FIELD_DECL,
The first hunk, came from another backport, is redundant. Removed it in
the new patch.
--
Yao (éå)
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.
Index: config/arm/arm.c
===================================================================
--- config/arm/arm.c (revision 167948)
+++ config/arm/arm.c (working copy)
@@ -12182,13 +12183,13 @@
{
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)
Index: testsuite/gcc.target/arm/pr45094.c
===================================================================
--- testsuite/gcc.target/arm/pr45094.c (revision 0)
+++ testsuite/gcc.target/arm/pr45094.c (revision 0)
@@ -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;
+}