[AArch64] Reject -0.0 as an 8-bit FP immediate
authorRichard Sandiford <richard.sandiford@arm.com>
Thu, 11 Aug 2016 08:14:45 +0000 (09:14 +0100)
committerRichard Sandiford <richard.sandiford@arm.com>
Thu, 11 Aug 2016 08:14:45 +0000 (09:14 +0100)
commitdbd8770c866ae978feb5ce9e71f64b9f7204d802
tree79ab9ad767a5c837f37bcaf43417ee30a7317da1
parentd93d1c80b351a424c1737436b5e7dfb44ddc9d46
[AArch64] Reject -0.0 as an 8-bit FP immediate

parse_aarch64_imm_float was accepting -0.0 even though that's not
a valid immediate for any instruction.  The FPIMM0 caller rejected
it, but the FPIMM one would silently treat it as -2.0.

This patch rejects -0.0 and adds testcases to illegal.[sd].

Before the patch, the final error emitted for illegal.s was:

        Error: cannot do 16-byte relocation

which was matched by:

        [^:]*:569: Error: .*

The error was reported against the last line of the file rather than
the instruction that required the reloc.  Adding more instructions
meant that the line number also changed.

Reporting against the wrong line isn't good from a QoI perspective
but isn't what I'm trying to fix here.  Until it's fixed, I thought
it would be better to adjust the match to be against an end-of-file
comment rather than against whatever the last instruction happens to be.

gas/
* config/tc-aarch64.c (parse_aarch64_imm_float): Reject -0.0.
* testsuite/gas/aarch64/illegal.s, testsuite/gas/aarch64/illegal.l:
Add tests for -0.0.  Add an end-of-file comment.
gas/ChangeLog
gas/config/tc-aarch64.c
gas/testsuite/gas/aarch64/illegal.l
gas/testsuite/gas/aarch64/illegal.s