diff options
| author | Oliver Stannard <oliver.stannard@arm.com> | 2017-10-24 08:55:36 +0000 |
|---|---|---|
| committer | Oliver Stannard <oliver.stannard@arm.com> | 2017-10-24 08:55:36 +0000 |
| commit | c507b370a1a6949edd5b608c2a6cb65000cf90d2 (patch) | |
| tree | 6a3e39daab98d60dbde02e5f936c48f5874bfc52 /llvm | |
| parent | fb4a9b7ededc5bc49667c4f3aa57471f91de8957 (diff) | |
| download | bcm5719-llvm-c507b370a1a6949edd5b608c2a6cb65000cf90d2.tar.gz bcm5719-llvm-c507b370a1a6949edd5b608c2a6cb65000cf90d2.zip | |
[ARM] Remove tCPS alias which just crashed
This alias caused a crash when trying to print the "cps #0" instruction in a
diagnostic for thumbv6 (which doesn't have that instruction).
The comment was incorrect, this instruction is UNPREDICTABLE if no flag bits
are set, so I don't think it's worth keeping.
Differential Revision: https://reviews.llvm.org/D39191
llvm-svn: 316420
Diffstat (limited to 'llvm')
| -rw-r--r-- | llvm/lib/Target/ARM/ARMInstrThumb.td | 7 | ||||
| -rw-r--r-- | llvm/test/MC/ARM/cps.s | 14 |
2 files changed, 14 insertions, 7 deletions
diff --git a/llvm/lib/Target/ARM/ARMInstrThumb.td b/llvm/lib/Target/ARM/ARMInstrThumb.td index 2ae23fe1c05..0bf6b72db3f 100644 --- a/llvm/lib/Target/ARM/ARMInstrThumb.td +++ b/llvm/lib/Target/ARM/ARMInstrThumb.td @@ -1671,13 +1671,6 @@ let isBranch = 1, isTerminator = 1, isBarrier = 1, isIndirectBranch = 1 in { def : InstAlias<"nop", (tMOVr R8, R8, 14, 0), 0>, Requires<[IsThumb, IsThumb1Only]>; -// For round-trip assembly/disassembly, we have to handle a CPS instruction -// without any iflags. That's not, strictly speaking, valid syntax, but it's -// a useful extension and assembles to defined behaviour (the insn does -// nothing). -def : tInstAlias<"cps$imod", (tCPS imod_op:$imod, 0)>; -def : tInstAlias<"cps$imod", (tCPS imod_op:$imod, 0)>; - // "neg" is and alias for "rsb rd, rn, #0" def : tInstAlias<"neg${s}${p} $Rd, $Rm", (tRSB tGPR:$Rd, s_cc_out:$s, tGPR:$Rm, pred:$p)>; diff --git a/llvm/test/MC/ARM/cps.s b/llvm/test/MC/ARM/cps.s index 52244dffbab..bafdfdea537 100644 --- a/llvm/test/MC/ARM/cps.s +++ b/llvm/test/MC/ARM/cps.s @@ -3,6 +3,8 @@ @ RUN: llvm-mc -triple=thumbv7r--none-eabi -show-encoding < %s | FileCheck %s @ RUN: llvm-mc -triple=thumbv8a--none-eabi -show-encoding < %s | FileCheck %s @ RUN: not llvm-mc -triple=thumbv7m--none-eabi -show-encoding < %s 2>&1 | FileCheck %s --check-prefix=UNDEF +@ RUN: not llvm-mc -triple=thumbv6--none-eabi -show-encoding < %s 2>%t | FileCheck %s --check-prefix=V6 +@ RUN: FileCheck %s < %t --check-prefix=V6-ERRORS cpsie f cpsie i, #3 @@ -15,3 +17,15 @@ @ UNDEF-DAG: cpsie f @ encoding: [0x61,0xb6] @ UNDEF-DAG: instruction requires: @ UNDEF-DAG: error: instruction 'cps' requires effect for M-class + +@ V6: cpsie f @ encoding: [0x61,0xb6] +@ V6-ERRORS: error: invalid instruction, any one of the following would fix this: +@ V6-ERRORS-NEXT: cpsie i, #3 +@ V6-ERRORS: note: instruction requires: thumb2 +@ V6-ERRORS: note: instruction requires: arm-mode +@ V6-ERRORS: note: too many operands for instruction +@ V6-ERRORS: error: invalid instruction, any one of the following would fix this: +@ V6-ERRORS: cps #0 +@ V6-ERRORS: note: too few operands for instruction +@ V6-ERRORS: note: instruction requires: arm-mode +@ V6-ERRORS: note: instruction requires: thumb2 |

