This weak I investigated GCC trunk fails to compile test 186.crafty
from SPECINT2000
on ARM. File validate.c compilation leads to this:
/tmp/ccXFsLlG.s: Assembler messages:
/tmp/ccXFsLlG.s:3411: Error: bad immediate value for offset (4112)
/tmp/ccXFsLlG.s:7069: Error: bad immediate value for offset (4096)
I find a patch, which causes the problem.
http://gcc.gnu.org/ml/gcc-patches/2011-08/msg01249.html
Ramana, you forgot to set count = 2 in one case.
This patch fixes the problem successfully.
Cross-compiler regtest showed no new failures. All SPECINT2000 tests
work correctly.
Ok for trunk?
2012-02-10 Roman Zhuykov zhr...@ispras.ru
* config/arm/arm.c (output_move_double): In one case properly
count number of instructions that will be emitted.
---
gcc/config/arm/arm.c |3 +++
1 files changed, 3 insertions(+), 0 deletions(-)
diff --git a/gcc/config/arm/arm.c b/gcc/config/arm/arm.c
index e2ab102..7f0dc6b 100644
--- a/gcc/config/arm/arm.c
+++ b/gcc/config/arm/arm.c
@@ -14205,6 +14205,9 @@ output_move_double (rtx *operands, bool emit,
int *count)
output_asm_insn (sub%?\t%0, %1, %2, otherops);
}
+ if (count)
+ *count = 2;
+
if (TARGET_LDRD)
return ldr%(d%)\t%0, [%1];
--
Roman Zhuykov
zhr...@ispras.ru