summaryrefslogtreecommitdiff
path: root/test/MC
diff options
context:
space:
mode:
authorRichard Sandiford <rsandifo@linux.vnet.ibm.com>2013-05-24 14:26:46 +0000
committerRichard Sandiford <rsandifo@linux.vnet.ibm.com>2013-05-24 14:26:46 +0000
commitbfe3212dd807d018cb66479829fd81c8e7bd0f81 (patch)
tree881fd3800ad9f6e1dc8560763aae90edd641b483 /test/MC
parentf386961da34426d12de8558ad04ad7f22c71489a (diff)
downloadllvm-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.s14
-rw-r--r--test/MC/SystemZ/tokens.s70
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