diff options
| author | Jingyue Wu <jingyue@google.com> | 2016-04-26 22:59:25 +0000 |
|---|---|---|
| committer | Jingyue Wu <jingyue@google.com> | 2016-04-26 22:59:25 +0000 |
| commit | c1b9d47b3b30ba6714776e4a255968946e48bb29 (patch) | |
| tree | a9e5f381423fed916264bc65f20c545d024af88e /llvm/lib/Target | |
| parent | e5030e85ea8cadf868ee1e311eebd210e8637728 (diff) | |
| download | bcm5719-llvm-c1b9d47b3b30ba6714776e4a255968946e48bb29.tar.gz bcm5719-llvm-c1b9d47b3b30ba6714776e4a255968946e48bb29.zip | |
[NVPTX] Fix some usages of CodeGenOpt::None.
NVPTXLowerKernelArgs is required for correctness, so it should not be guarded
by CodeGenOpt::None.
NVPTXPeephole is optimization only, so it should be skipped when
CodeGenOpt::None.
llvm-svn: 267619
Diffstat (limited to 'llvm/lib/Target')
| -rw-r--r-- | llvm/lib/Target/NVPTX/NVPTXTargetMachine.cpp | 14 |
1 files changed, 9 insertions, 5 deletions
diff --git a/llvm/lib/Target/NVPTX/NVPTXTargetMachine.cpp b/llvm/lib/Target/NVPTX/NVPTXTargetMachine.cpp index 60cbf793c9b..b28aa767ce5 100644 --- a/llvm/lib/Target/NVPTX/NVPTXTargetMachine.cpp +++ b/llvm/lib/Target/NVPTX/NVPTXTargetMachine.cpp @@ -181,7 +181,6 @@ void NVPTXPassConfig::addEarlyCSEOrGVNPass() { } void NVPTXPassConfig::addAddressSpaceInferencePasses() { - addPass(createNVPTXLowerKernelArgsPass(&getNVPTXTargetMachine())); // NVPTXLowerKernelArgs emits alloca for byval parameters which can often // be eliminated by SROA. addPass(createSROAPass()); @@ -235,6 +234,9 @@ void NVPTXPassConfig::addIRPasses() { addPass(createNVPTXAssignValidGlobalNamesPass()); addPass(createGenericToNVVMPass()); + // NVPTXLowerKernelArgs is required for correctness and should be run right + // before the address space inference passes. + addPass(createNVPTXLowerKernelArgsPass(&getNVPTXTargetMachine())); if (getOptLevel() != CodeGenOpt::None) { addAddressSpaceInferencePasses(); addStraightLineScalarOptimizationPasses(); @@ -273,10 +275,12 @@ bool NVPTXPassConfig::addInstSelector() { void NVPTXPassConfig::addPostRegAlloc() { addPass(createNVPTXPrologEpilogPass(), false); - // NVPTXPrologEpilogPass calculates frame object offset and replace frame - // index with VRFrame register. NVPTXPeephole need to be run after that and - // will replace VRFrame with VRFrameLocal when possible. - addPass(createNVPTXPeephole()); + if (getOptLevel() != CodeGenOpt::None) { + // NVPTXPrologEpilogPass calculates frame object offset and replace frame + // index with VRFrame register. NVPTXPeephole need to be run after that and + // will replace VRFrame with VRFrameLocal when possible. + addPass(createNVPTXPeephole()); + } } FunctionPass *NVPTXPassConfig::createTargetRegisterAllocator(bool) { |

