Add a flag to disable the ARM64DeadRegisterDefinitionsPass

This patch adds a -arm64-dead-def-elimination flag so that it is possible to
disable dead definition elimination. Includes test case.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@206207 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
Louis Gerbarg
2014-04-14 21:05:02 +00:00
parent b1138a1313
commit 27539d46cc
2 changed files with 26 additions and 1 deletions

View File

@@ -39,6 +39,14 @@ EnableCollectLOH("arm64-collect-loh", cl::Hidden,
" optimization hints (LOH)"),
cl::init(true));
static cl::opt<bool>
EnableDeadRegisterElimination("arm64-dead-def-elimination", cl::Hidden,
cl::desc("Enable the pass that removes dead"
" definitons and replaces stores to"
" them with stores to the zero"
" register"),
cl::init(true));
extern "C" void LLVMInitializeARM64Target() {
// Register the target.
RegisterTargetMachine<ARM64TargetMachine> X(TheARM64Target);
@@ -135,7 +143,8 @@ bool ARM64PassConfig::addPreRegAlloc() {
bool ARM64PassConfig::addPostRegAlloc() {
// Change dead register definitions to refer to the zero register.
addPass(createARM64DeadRegisterDefinitions());
if (EnableDeadRegisterElimination)
addPass(createARM64DeadRegisterDefinitions());
return true;
}