re PR target/45094 ([arm] wrong instructions for dword move in some cases)

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.

From-SVN: r163338
This commit is contained in:
Yao Qi 2010-08-18 12:33:43 +00:00 committed by Yao Qi
parent 38e3c1e18e
commit 8019fcfb55
4 changed files with 42 additions and 4 deletions

View File

@ -1,3 +1,9 @@
2010-08-18 Yao Qi <yao@codesourcery.com>
PR target/45094
* config/arm/arm.c (output_move_double): Fix typo generating
instructions ('ldr'->'str').
2010-08-18 Maxim Kuvyrkov <maxim@codesourcery.com>
PR rtl-optimization/42575

View File

@ -12944,13 +12944,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)

View File

@ -1,3 +1,8 @@
2010-08-18 Yao Qi <yao@codesourcery.com>
PR target/45094
* gcc.target/arm/pr45094.c: New test.
2010-08-18 Maxim Kuvyrkov <maxim@codesourcery.com>
* gcc.target/arm/mla-1.c: Use thumb-friendly architecture.

View File

@ -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;
}