Index: llvm/trunk/lib/Target/ARM/ARMSubtarget.cpp =================================================================== --- llvm/trunk/lib/Target/ARM/ARMSubtarget.cpp +++ llvm/trunk/lib/Target/ARM/ARMSubtarget.cpp @@ -188,8 +188,10 @@ 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); Index: llvm/trunk/test/CodeGen/ARM/execute-only-big-stack-frame.ll =================================================================== --- llvm/trunk/test/CodeGen/ARM/execute-only-big-stack-frame.ll +++ llvm/trunk/test/CodeGen/ARM/execute-only-big-stack-frame.ll @@ -2,6 +2,8 @@ ; RUN: | FileCheck --check-prefix=CHECK-SUBW-ADDW %s ; RUN: llc < %s -mtriple=thumbv8m.base -mattr=+execute-only -O0 %s -o - \ ; RUN: | FileCheck --check-prefix=CHECK-MOVW-MOVT-ADD %s +; RUN: llc < %s -mtriple=thumbv8m.base -mcpu=cortex-m23 -mattr=+execute-only -O0 %s -o - \ +; RUN: | FileCheck --check-prefix=CHECK-MOVW-MOVT-ADD %s ; RUN: llc < %s -mtriple=thumbv8m.main -mattr=+execute-only -O0 %s -o - \ ; RUN: | FileCheck --check-prefix=CHECK-SUBW-ADDW %s Index: llvm/trunk/test/CodeGen/ARM/execute-only-section.ll =================================================================== --- llvm/trunk/test/CodeGen/ARM/execute-only-section.ll +++ llvm/trunk/test/CodeGen/ARM/execute-only-section.ll @@ -1,5 +1,6 @@ ; RUN: llc < %s -mtriple=thumbv7m -mattr=+execute-only %s -o - | FileCheck %s ; RUN: llc < %s -mtriple=thumbv8m.base -mattr=+execute-only %s -o - | FileCheck %s +; RUN: llc < %s -mtriple=thumbv8m.base -mcpu=cortex-m23 -mattr=+execute-only %s -o - | FileCheck %s ; RUN: llc < %s -mtriple=thumbv8m.main -mattr=+execute-only %s -o - | FileCheck %s ; CHECK: .section .text,"axy",%progbits,unique,0 Index: llvm/trunk/test/CodeGen/ARM/execute-only.ll =================================================================== --- llvm/trunk/test/CodeGen/ARM/execute-only.ll +++ llvm/trunk/test/CodeGen/ARM/execute-only.ll @@ -1,4 +1,5 @@ ; RUN: llc -mtriple=thumbv8m.base-eabi -mattr=+execute-only %s -o - | FileCheck --check-prefix=CHECK --check-prefix=CHECK-T2BASE %s +; RUN: llc -mtriple=thumbv8m.base-eabi -mcpu=cortex-m23 -mattr=+execute-only %s -o - | FileCheck --check-prefix=CHECK --check-prefix=CHECK-T2BASE %s ; RUN: llc -mtriple=thumbv7m-eabi -mattr=+execute-only %s -o - | FileCheck --check-prefix=CHECK --check-prefix=CHECK-T2 %s ; RUN: llc -mtriple=thumbv8m.main-eabi -mattr=+execute-only %s -o - | FileCheck --check-prefix=CHECK --check-prefix=CHECK-T2 %s