From d6e2911a4f732a088d8f4f71982a845f9dd50b45 Mon Sep 17 00:00:00 2001 From: Renato Golin Date: Thu, 26 Mar 2015 18:38:04 +0000 Subject: [PATCH] Adds an option to disable ARM ld/st optim pass Enabled by default, but it's useful when debugging with llc. Patch by Ranjeet Singh. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@233303 91177308-0d34-0410-b5e6-96231b3b80d8 --- lib/Target/ARM/ARMTargetMachine.cpp | 23 ++++++++++++++++------- 1 file changed, 16 insertions(+), 7 deletions(-) diff --git a/lib/Target/ARM/ARMTargetMachine.cpp b/lib/Target/ARM/ARMTargetMachine.cpp index fcb96e08039..1bee1b077f7 100644 --- a/lib/Target/ARM/ARMTargetMachine.cpp +++ b/lib/Target/ARM/ARMTargetMachine.cpp @@ -37,6 +37,11 @@ EnableAtomicTidy("arm-atomic-cfg-tidy", cl::Hidden, " to make use of cmpxchg flow-based information"), cl::init(true)); +static cl::opt +EnableARMLoadStoreOpt("arm-load-store-opt", cl::Hidden, + cl::desc("Enable ARM load/store optimization pass"), + cl::init(true)); + extern "C" void LLVMInitializeARMTarget() { // Register the target. RegisterTargetMachine X(TheARMLETarget); @@ -348,18 +353,22 @@ bool ARMPassConfig::addInstSelector() { } void ARMPassConfig::addPreRegAlloc() { - if (getOptLevel() != CodeGenOpt::None) - addPass(createARMLoadStoreOptimizationPass(true)); - if (getOptLevel() != CodeGenOpt::None) + if (getOptLevel() != CodeGenOpt::None) { addPass(createMLxExpansionPass()); - if (getOptLevel() != CodeGenOpt::None && !DisableA15SDOptimization) { - addPass(createA15SDOptimizerPass()); + + if (EnableARMLoadStoreOpt) + addPass(createARMLoadStoreOptimizationPass(/* pre-register alloc */ true)); + + if (!DisableA15SDOptimization) + addPass(createA15SDOptimizerPass()); } } void ARMPassConfig::addPreSched2() { if (getOptLevel() != CodeGenOpt::None) { - addPass(createARMLoadStoreOptimizationPass()); + if (EnableARMLoadStoreOpt) + addPass(createARMLoadStoreOptimizationPass()); + addPass(createExecutionDependencyFixPass(&ARM::DPRRegClass)); } @@ -373,7 +382,7 @@ void ARMPassConfig::addPreSched2() { addPass(createThumb2SizeReductionPass()); if (!getARMSubtarget().isThumb1Only()) addPass(&IfConverterID); - } + } addPass(createThumb2ITBlockPass()); } -- 2.34.1