diff options
| author | Stanislav Mekhanoshin <Stanislav.Mekhanoshin@amd.com> | 2017-03-30 20:16:02 +0000 |
|---|---|---|
| committer | Stanislav Mekhanoshin <Stanislav.Mekhanoshin@amd.com> | 2017-03-30 20:16:02 +0000 |
| commit | 89653dfd2afa0708ad3f093371aa27b57a366d5c (patch) | |
| tree | 37c782e23ea65dbb750f3980e46f045fb6807590 /llvm/lib/Target | |
| parent | 346dcaf1fa0f7823fda655b55d22f628367784f9 (diff) | |
| download | bcm5719-llvm-89653dfd2afa0708ad3f093371aa27b57a366d5c.tar.gz bcm5719-llvm-89653dfd2afa0708ad3f093371aa27b57a366d5c.zip | |
[AMDGPU] Add GlobalOpt parameter to Always Inliner pass
If set to false it does not remove global aliases. With this parameter
set to false it should be safe to run the pass before link.
Differential Revision: https://reviews.llvm.org/D31489
llvm-svn: 299108
Diffstat (limited to 'llvm/lib/Target')
| -rw-r--r-- | llvm/lib/Target/AMDGPU/AMDGPU.h | 2 | ||||
| -rw-r--r-- | llvm/lib/Target/AMDGPU/AMDGPUAlwaysInlinePass.cpp | 14 | ||||
| -rw-r--r-- | llvm/lib/Target/AMDGPU/AMDGPUTargetMachine.cpp | 2 |
3 files changed, 11 insertions, 7 deletions
diff --git a/llvm/lib/Target/AMDGPU/AMDGPU.h b/llvm/lib/Target/AMDGPU/AMDGPU.h index 4e2f0af5a20..1acfbf5c5a8 100644 --- a/llvm/lib/Target/AMDGPU/AMDGPU.h +++ b/llvm/lib/Target/AMDGPU/AMDGPU.h @@ -98,7 +98,7 @@ extern char &AMDGPUPromoteAllocaID; Pass *createAMDGPUStructurizeCFGPass(); FunctionPass *createAMDGPUISelDag(TargetMachine &TM, CodeGenOpt::Level OptLevel); -ModulePass *createAMDGPUAlwaysInlinePass(); +ModulePass *createAMDGPUAlwaysInlinePass(bool GlobalOpt = true); ModulePass *createAMDGPUOpenCLImageTypeLoweringPass(); FunctionPass *createAMDGPUAnnotateUniformValues(); diff --git a/llvm/lib/Target/AMDGPU/AMDGPUAlwaysInlinePass.cpp b/llvm/lib/Target/AMDGPU/AMDGPUAlwaysInlinePass.cpp index 067a16a2af7..1d03714874e 100644 --- a/llvm/lib/Target/AMDGPU/AMDGPUAlwaysInlinePass.cpp +++ b/llvm/lib/Target/AMDGPU/AMDGPUAlwaysInlinePass.cpp @@ -24,8 +24,10 @@ namespace { class AMDGPUAlwaysInline : public ModulePass { static char ID; + bool GlobalOpt; + public: - AMDGPUAlwaysInline() : ModulePass(ID) { } + AMDGPUAlwaysInline(bool GlobalOpt) : ModulePass(ID), GlobalOpt(GlobalOpt) { } bool runOnModule(Module &M) override; StringRef getPassName() const override { return "AMDGPU Always Inline Pass"; } }; @@ -45,8 +47,10 @@ bool AMDGPUAlwaysInline::runOnModule(Module &M) { } } - for (GlobalAlias* A : AliasesToRemove) { - A->eraseFromParent(); + if (GlobalOpt) { + for (GlobalAlias* A : AliasesToRemove) { + A->eraseFromParent(); + } } for (Function &F : M) { @@ -70,6 +74,6 @@ bool AMDGPUAlwaysInline::runOnModule(Module &M) { return false; } -ModulePass *llvm::createAMDGPUAlwaysInlinePass() { - return new AMDGPUAlwaysInline(); +ModulePass *llvm::createAMDGPUAlwaysInlinePass(bool GlobalOpt) { + return new AMDGPUAlwaysInline(GlobalOpt); } diff --git a/llvm/lib/Target/AMDGPU/AMDGPUTargetMachine.cpp b/llvm/lib/Target/AMDGPU/AMDGPUTargetMachine.cpp index c5302f7942f..c6c20b81352 100644 --- a/llvm/lib/Target/AMDGPU/AMDGPUTargetMachine.cpp +++ b/llvm/lib/Target/AMDGPU/AMDGPUTargetMachine.cpp @@ -315,7 +315,7 @@ void AMDGPUTargetMachine::adjustPassManager(PassManagerBuilder &Builder) { PM.add(createGlobalDCEPass()); } if (EarlyInline) - PM.add(createAMDGPUAlwaysInlinePass()); + PM.add(createAMDGPUAlwaysInlinePass(false)); }); Builder.addExtension( |

