summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorOliver Stannard <oliver.stannard@arm.com>2017-03-14 13:50:10 +0000
committerOliver Stannard <oliver.stannard@arm.com>2017-03-14 13:50:10 +0000
commit6ee22c41f85b3e230ab4aa9f7d7d12c7745579f6 (patch)
tree62acf92b25df2b0bb8769e2f47de0730931f5611
parent283316b5c02d4daa131024a238019ceb28fac9dc (diff)
downloadbcm5719-llvm-6ee22c41f85b3e230ab4aa9f7d7d12c7745579f6.tar.gz
bcm5719-llvm-6ee22c41f85b3e230ab4aa9f7d7d12c7745579f6.zip
[ARM] Diagnose ARM MOVT without :lower16: or :upper16: expression
This instruction was missing from the list of opcodes that we check, so we were hitting an llvm_unreachable in ARMMCCodeEmitter.cpp for the ARM MOVT instruction, rather than the diagnostic that is emitted for the other MOVW/MOVT instructions. Differential revision: https://reviews.llvm.org/D30936 llvm-svn: 297739
-rw-r--r--llvm/lib/Target/ARM/AsmParser/ARMAsmParser.cpp1
-rw-r--r--llvm/test/MC/ARM/diagnostics.s3
2 files changed, 4 insertions, 0 deletions
diff --git a/llvm/lib/Target/ARM/AsmParser/ARMAsmParser.cpp b/llvm/lib/Target/ARM/AsmParser/ARMAsmParser.cpp
index f20ee1b91ac..1a6f8e763e2 100644
--- a/llvm/lib/Target/ARM/AsmParser/ARMAsmParser.cpp
+++ b/llvm/lib/Target/ARM/AsmParser/ARMAsmParser.cpp
@@ -6682,6 +6682,7 @@ bool ARMAsmParser::validateInstruction(MCInst &Inst,
break;
}
case ARM::MOVi16:
+ case ARM::MOVTi16:
case ARM::t2MOVi16:
case ARM::t2MOVTi16:
{
diff --git a/llvm/test/MC/ARM/diagnostics.s b/llvm/test/MC/ARM/diagnostics.s
index a1dd95f7d7f..549b13b7d42 100644
--- a/llvm/test/MC/ARM/diagnostics.s
+++ b/llvm/test/MC/ARM/diagnostics.s
@@ -491,10 +491,13 @@
foo2:
mov r0, foo2
movw r0, foo2
+ movt r0, foo2
@ CHECK-ERRORS: error: immediate expression for mov requires :lower16: or :upper16
@ CHECK-ERRORS: ^
@ CHECK-ERRORS: error: immediate expression for mov requires :lower16: or :upper16
@ CHECK-ERRORS: ^
+@ CHECK-ERRORS: error: immediate expression for mov requires :lower16: or :upper16
+@ CHECK-ERRORS: ^
str r0, [r0, #4]!
str r0, [r0, r1]!
OpenPOWER on IntegriCloud