summaryrefslogtreecommitdiffstats
path: root/llvm/lib
diff options
context:
space:
mode:
authorDavid Spickett <david.spickett@arm.com>2018-09-28 08:55:19 +0000
committerDavid Spickett <david.spickett@arm.com>2018-09-28 08:55:19 +0000
commitea605913bed0eb9264c83fa8a91de064ffe8c74b (patch)
treeb45d4291e4acd5f98f8e31bda40ccbb568f01dd7 /llvm/lib
parenta799fe40dcb45f9f67a02538b64a5a01f4c7ace2 (diff)
downloadbcm5719-llvm-ea605913bed0eb9264c83fa8a91de064ffe8c74b.tar.gz
bcm5719-llvm-ea605913bed0eb9264c83fa8a91de064ffe8c74b.zip
[ARM] Allow execute only code on Cortex-m23
The NoMovt feature prevents the use of MOVW/MOVT instructions on Cortex-M23 for performance reasons. These instructions are required for execute only code so NoMovt should be disabled when that option is enabled. Differential Revision: https://reviews.llvm.org/D52551 llvm-svn: 343302
Diffstat (limited to 'llvm/lib')
-rw-r--r--llvm/lib/Target/ARM/ARMSubtarget.cpp6
1 files changed, 4 insertions, 2 deletions
diff --git a/llvm/lib/Target/ARM/ARMSubtarget.cpp b/llvm/lib/Target/ARM/ARMSubtarget.cpp
index 1c17b63a35d..b1d0761e323 100644
--- a/llvm/lib/Target/ARM/ARMSubtarget.cpp
+++ b/llvm/lib/Target/ARM/ARMSubtarget.cpp
@@ -188,8 +188,10 @@ void ARMSubtarget::initSubtargetFeatures(StringRef CPU, StringRef FS) {
assert(hasV6T2Ops() || !hasThumb2());
// Execute only support requires movt support
- if (genExecuteOnly())
- assert(hasV8MBaselineOps() && !NoMovt && "Cannot generate execute-only code for this target");
+ if (genExecuteOnly()) {
+ NoMovt = false;
+ assert(hasV8MBaselineOps() && "Cannot generate execute-only code for this target");
+ }
// Keep a pointer to static instruction cost data for the specified CPU.
SchedModel = getSchedModelForCPU(CPUString);
OpenPOWER on IntegriCloud