Message ID | CAJnFk2fsSP-Uax+=NmVS9i3jNC8oScQ3GXrHkdFou+TJoEjNkQ@mail.gmail.com |
---|---|
State | New |
Headers | show |
On 10/02/12 11:39, Roman Zhuykov wrote: > 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 <zhroma@ispras.ru> > > * config/arm/arm.c (output_move_double): In one case properly > count number of instructions that will be emitted. OK. R.
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]";