diff options
author | Richard Sandiford <rsandifo@linux.vnet.ibm.com> | 2013-05-24 14:26:46 +0000 |
---|---|---|
committer | Richard Sandiford <rsandifo@linux.vnet.ibm.com> | 2013-05-24 14:26:46 +0000 |
commit | bfe3212dd807d018cb66479829fd81c8e7bd0f81 (patch) | |
tree | 881fd3800ad9f6e1dc8560763aae90edd641b483 /test/MC | |
parent | f386961da34426d12de8558ad04ad7f22c71489a (diff) | |
download | llvm-bfe3212dd807d018cb66479829fd81c8e7bd0f81.tar.gz llvm-bfe3212dd807d018cb66479829fd81c8e7bd0f81.tar.bz2 llvm-bfe3212dd807d018cb66479829fd81c8e7bd0f81.tar.xz |
[SystemZ] Improve AsmParser handling of invalid instructions
Previously, an invalid instruction like:
foo %r1, %r0
would generate the rather odd error message:
....: error: unknown token in expression
foo %r1, %r0
^
We now get the more informative:
....: error: invalid instruction
foo %r1, %r0
^
The same would happen if an address were used where a register was expected.
We now get "invalid operand for instruction" instead.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@182644 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'test/MC')
-rw-r--r-- | test/MC/SystemZ/regs-bad.s | 14 | ||||
-rw-r--r-- | test/MC/SystemZ/tokens.s | 70 |
2 files changed, 77 insertions, 7 deletions
diff --git a/test/MC/SystemZ/regs-bad.s b/test/MC/SystemZ/regs-bad.s index ec6751af84..65720578ff 100644 --- a/test/MC/SystemZ/regs-bad.s +++ b/test/MC/SystemZ/regs-bad.s @@ -13,7 +13,7 @@ #CHECK: lr %r0,%a1 #CHECK: error: invalid operand for instruction #CHECK: lr %r0,0 -#CHECK: error: unexpected token in argument list +#CHECK: error: invalid operand for instruction #CHECK: lr %r0,0(%r1) lr %f0,%r1 @@ -35,7 +35,7 @@ #CHECK: lgr %r0,%a1 #CHECK: error: invalid operand for instruction #CHECK: lgr %r0,0 -#CHECK: error: unexpected token in argument list +#CHECK: error: invalid operand for instruction #CHECK: lgr %r0,0(%r1) lgr %f0,%r1 @@ -73,7 +73,7 @@ #CHECK: dlr %r0,%a1 #CHECK: error: invalid operand for instruction #CHECK: dlr %r0,0 -#CHECK: error: unexpected token in argument list +#CHECK: error: invalid operand for instruction #CHECK: dlr %r0,0(%r1) dlr %r1,%r0 @@ -103,7 +103,7 @@ #CHECK: ler %f0,%a1 #CHECK: error: invalid operand for instruction #CHECK: ler %f0,0 -#CHECK: error: unexpected token in argument list +#CHECK: error: invalid operand for instruction #CHECK: ler %f0,0(%r1) ler %r0,%f1 @@ -125,7 +125,7 @@ #CHECK: ldr %f0,%a1 #CHECK: error: invalid operand for instruction #CHECK: ldr %f0,0 -#CHECK: error: unexpected token in argument list +#CHECK: error: invalid operand for instruction #CHECK: ldr %f0,0(%r1) ldr %r0,%f1 @@ -163,7 +163,7 @@ #CHECK: lxr %f0,%a1 #CHECK: error: invalid operand for instruction #CHECK: lxr %f0,0 -#CHECK: error: unexpected token in argument list +#CHECK: error: invalid operand for instruction #CHECK: lxr %f0,0(%r1) lxr %f2,%f0 @@ -189,7 +189,7 @@ #CHECK: ear %r0,%f0 #CHECK: error: invalid operand for instruction #CHECK: ear %r0,0 -#CHECK: error: unexpected token in argument list +#CHECK: error: invalid operand for instruction #CHECK: ear %r0,0(%r1) ear %r0,%r0 diff --git a/test/MC/SystemZ/tokens.s b/test/MC/SystemZ/tokens.s new file mode 100644 index 0000000000..07b29d8ade --- /dev/null +++ b/test/MC/SystemZ/tokens.s @@ -0,0 +1,70 @@ +# RUN: not llvm-mc -triple s390x-linux-gnu < %s 2> %t +# RUN: FileCheck < %t %s + +#CHECK: error: invalid instruction +#CHECK: foo 100, 200 +#CHECK: error: register expected +#CHECK: foo 100(, 200 +#CHECK: error: register expected +#CHECK: foo 100(0), 200 +#CHECK: error: invalid operand +#CHECK: foo 100(%a0), 200 +#CHECK: error: %r0 used in an address +#CHECK: foo 100(%r0), 200 +#CHECK: error: invalid operand +#CHECK: foo 100(%r1,%a0), 200 +#CHECK: error: %r0 used in an address +#CHECK: foo 100(%r1,%r0), 200 +#CHECK: error: unexpected token in address +#CHECK: foo 100(%r1,%r2, 200 +#CHECK: error: invalid instruction +#CHECK: foo 100(%r1,%r2), 200 +#CHECK: error: unexpected token in argument list +#CHECK: foo 100(%r1,%r2)(, 200 +#CHECK: error: invalid instruction +#CHECK: foo %r0, 200 +#CHECK: error: invalid instruction +#CHECK: foo %r15, 200 +#CHECK: error: invalid register +#CHECK: foo %r16, 200 +#CHECK: error: invalid instruction +#CHECK: foo %f0, 200 +#CHECK: error: invalid instruction +#CHECK: foo %f15, 200 +#CHECK: error: invalid register +#CHECK: foo %f16, 200 +#CHECK: error: invalid instruction +#CHECK: foo %a0, 200 +#CHECK: error: invalid instruction +#CHECK: foo %a15, 200 +#CHECK: error: invalid register +#CHECK: foo %a16, 200 +#CHECK: error: invalid register +#CHECK: foo %c, 200 +#CHECK: error: invalid register +#CHECK: foo %, 200 +#CHECK: error: unknown token in expression +#CHECK: foo {, 200 + + foo 100, 200 + foo 100(, 200 + foo 100(0), 200 + foo 100(%a0), 200 + foo 100(%r0), 200 + foo 100(%r1,%a0), 200 + foo 100(%r1,%r0), 200 + foo 100(%r1,%r2, 200 + foo 100(%r1,%r2), 200 + foo 100(%r1,%r2)(, 200 + foo %r0, 200 + foo %r15, 200 + foo %r16, 200 + foo %f0, 200 + foo %f15, 200 + foo %f16, 200 + foo %a0, 200 + foo %a15, 200 + foo %a16, 200 + foo %c, 200 + foo %, 200 + foo {, 200 |