From ea605913bed0eb9264c83fa8a91de064ffe8c74b Mon Sep 17 00:00:00 2001 From: David Spickett Date: Fri, 28 Sep 2018 08:55:19 +0000 Subject: [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 --- llvm/lib/Target/ARM/ARMSubtarget.cpp | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) (limited to 'llvm/lib') 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); -- cgit v1.2.3