gas: fix CBCOND diagnostics for invalid immediate operands.
authorJose E. Marchesi <jose.marchesi@oracle.com>
Fri, 25 Nov 2016 11:40:15 +0000 (03:40 -0800)
committerJose E. Marchesi <jose.marchesi@oracle.com>
Fri, 25 Nov 2016 11:40:15 +0000 (03:40 -0800)
commit65d1cff97c066e4399a175ef7294a5343c0b94d1
tree846d7a62f3ae9c81677827c40a78f99ffb4ed19c
parentec8f76882145c71bef81a9cadf0bf51ff9fa5b35
gas: fix CBCOND diagnostics for invalid immediate operands.

This patch fixes two problems in the SPARC assembler:

- The diagnostic message

  Error: Illegal operands: Immediate value in cbcond is out of range.

  is incorrectly issued for non-CBCOND instructions that feature a
  simm5 immediate field, such as MPMUL, MONTMUL, etc.

- When an invalid immediate operand is used in a CBCOND
  instruction, two redundant error messages are issued to the
  user, the second due to a stale fixup (this happens since
  commit 85024cd8bcb93f4112470ecdbd6c10fc2aea724f).

Some diagnostic tests for the CBCOND instructions are also
included in the patch.

Tested in both sparc64-linux-gnu and sparcv9-linux-gnu targets.

gas/ChangeLog:

2016-11-25  Jose E. Marchesi  <jose.marchesi@oracle.com>

* config/tc-sparc.c (sparc_ip): Avoid emitting a cbcond error
messages for non-cbcond instructions.
* testsuite/gas/sparc/cbcond-diag.s: New file.
* testsuite/gas/sparc/cbcond-diag.l: Likewise.
* testsuite/gas/sparc/sparc.exp (gas_64_check): Run cbcond-diag tests.
gas/ChangeLog
gas/config/tc-sparc.c
gas/testsuite/gas/sparc/cbcond-diag.l [new file with mode: 0644]
gas/testsuite/gas/sparc/cbcond-diag.s [new file with mode: 0644]
gas/testsuite/gas/sparc/sparc.exp