Commit 8019fcfb by Yao Qi Committed by Yao Qi

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
parent 38e3c1e1
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
......
......@@ -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)
......
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.
......
/* { 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;
}
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment