diff options
Diffstat (limited to 'test/MC/ARM/invalid-instructions-spellcheck.s')
-rw-r--r-- | test/MC/ARM/invalid-instructions-spellcheck.s | 68 |
1 files changed, 68 insertions, 0 deletions
diff --git a/test/MC/ARM/invalid-instructions-spellcheck.s b/test/MC/ARM/invalid-instructions-spellcheck.s new file mode 100644 index 000000000000..ca118cff6ddf --- /dev/null +++ b/test/MC/ARM/invalid-instructions-spellcheck.s @@ -0,0 +1,68 @@ +@ RUN: not llvm-mc -triple=arm -show-encoding < %s 2>&1 | FileCheck %s +@ RUN: not llvm-mc -triple=thumb -show-encoding < %s 2>&1 | FileCheck %s --check-prefix=CHECK-THUMB + +@ This tests the mnemonic spell checker. + +@ First check what happens when an instruction is omitted: + + r1, r2, r3 + +@ CHECK: error: unexpected token in operand +@ CHECK-NEXT: r1, r2, r3 +@ CHECK-NEXT: ^ + +@ We don't want to see a suggestion here; the edit distance is too large to +@ give sensible suggestions: + + aaaaaaaaaaaaaaa r1, r2, r3 + +@ CHECK: error: invalid instruction +@ CHECK-NEXT: aaaaaaaaaaaaaaa r1, r2, r3 +@ CHECK-NEXT: ^ + +@ Check that we get one suggestion: 'pushh' is 1 edit away, i.e. an deletion. + + pushh r1, r2, r3 + +@CHECK: error: invalid instruction, did you mean: push? +@CHECK-NEXT: pushh r1, r2, r3 +@CHECK-NEXT: ^ + + adXd r1, r2, r3 + +@ Check edit distance 1 and 2: 'add' has edit distance of 1 (a deletion), +@ and 'qadd' a distance of 2 (a deletion and an insertion) + +@ CHECK: error: invalid instruction, did you mean: add, qadd? +@ CHECK-NEXT: adXd r1, r2, r3 +@ CHECK-NEXT: ^ + +@ Check edit distance 1 and 2, just insertions: + + ad r1, r2, r3 + +@ CHECK: error: invalid instruction, did you mean: adc, add, adr, and, qadd? +@ CHECK-NEXT: ad r1, r2, r3 +@ CHECK-NEXT: ^ + +@ Check an instruction that is 2 edits away, and also has a lot of candidates: + + ldre r1, r2, r3 + +@ CHECK: error: invalid instruction, did you mean: ldr, ldrb, ldrd, ldrex, ldrexb, ldrexd, ldrexh, ldrh, ldrt? +@ CHECK-NEXT: ldre r1, r2, r3 +@ CHECK-NEXT: ^ + +@ Here it is checked that we don't suggest instructions that are not supported. +@ For example, in Thumb mode we don't want to see suggestions 'faddd' of 'qadd' +@ because they are not supported. + + fadd r1, r2, r3 + +@ CHECK-THUMB: error: invalid instruction, did you mean: add? +@ CHECK-THUMB: fadd r1, r2, r3 +@ CHECK-THUMB: ^ + +@ CHECK: error: invalid instruction, did you mean: add, qadd? +@ CHECK-NEXT: fadd r1, r2, r3 +@ CHECK-NEXT: ^ |