diff options
author | Stanislav Mekhanoshin <Stanislav.Mekhanoshin@amd.com> | 2017-01-27 16:38:10 +0000 |
---|---|---|
committer | Stanislav Mekhanoshin <Stanislav.Mekhanoshin@amd.com> | 2017-01-27 16:38:10 +0000 |
commit | f6c1feb8c3233ffc54c64562d1372b854c4d0b6b (patch) | |
tree | edfaa7ded62d60f69b375e7db82350eddeabe5b5 | |
parent | 1726fc698ccb85fe4bb23c200a50f28b57fc53cb (diff) | |
download | bcm5719-llvm-f6c1feb8c3233ffc54c64562d1372b854c4d0b6b.tar.gz bcm5719-llvm-f6c1feb8c3233ffc54c64562d1372b854c4d0b6b.zip |
[AMDGPU] Turn AMDGPUUnifyMetadata back into module pass
With the adjustPassManager interface that is now possible to use
custom early module passes.
Differential Revision: https://reviews.llvm.org/D29189
llvm-svn: 293300
-rw-r--r-- | llvm/lib/Target/AMDGPU/AMDGPU.h | 2 | ||||
-rw-r--r-- | llvm/lib/Target/AMDGPU/AMDGPUTargetMachine.cpp | 2 | ||||
-rw-r--r-- | llvm/lib/Target/AMDGPU/AMDGPUUnifyMetadata.cpp | 18 | ||||
-rw-r--r-- | llvm/test/CodeGen/AMDGPU/unify-metadata.ll | 4 |
4 files changed, 5 insertions, 21 deletions
diff --git a/llvm/lib/Target/AMDGPU/AMDGPU.h b/llvm/lib/Target/AMDGPU/AMDGPU.h index 78876ab4f9e..0916bdd2fcb 100644 --- a/llvm/lib/Target/AMDGPU/AMDGPU.h +++ b/llvm/lib/Target/AMDGPU/AMDGPU.h @@ -93,7 +93,7 @@ ModulePass *createAMDGPUAlwaysInlinePass(); ModulePass *createAMDGPUOpenCLImageTypeLoweringPass(); FunctionPass *createAMDGPUAnnotateUniformValues(); -FunctionPass* createAMDGPUUnifyMetadataPass(); +ModulePass* createAMDGPUUnifyMetadataPass(); void initializeAMDGPUUnifyMetadataPass(PassRegistry&); extern char &AMDGPUUnifyMetadataID; diff --git a/llvm/lib/Target/AMDGPU/AMDGPUTargetMachine.cpp b/llvm/lib/Target/AMDGPU/AMDGPUTargetMachine.cpp index aa3034509d1..e4f693267e2 100644 --- a/llvm/lib/Target/AMDGPU/AMDGPUTargetMachine.cpp +++ b/llvm/lib/Target/AMDGPU/AMDGPUTargetMachine.cpp @@ -208,7 +208,7 @@ StringRef AMDGPUTargetMachine::getFeatureString(const Function &F) const { void AMDGPUTargetMachine::adjustPassManager(PassManagerBuilder &Builder) { Builder.addExtension( - PassManagerBuilder::EP_EarlyAsPossible, + PassManagerBuilder::EP_ModuleOptimizerEarly, [&](const PassManagerBuilder &, legacy::PassManagerBase &PM) { PM.add(createAMDGPUUnifyMetadataPass()); }); diff --git a/llvm/lib/Target/AMDGPU/AMDGPUUnifyMetadata.cpp b/llvm/lib/Target/AMDGPU/AMDGPUUnifyMetadata.cpp index e6e10c7bc60..3a0c3ede08f 100644 --- a/llvm/lib/Target/AMDGPU/AMDGPUUnifyMetadata.cpp +++ b/llvm/lib/Target/AMDGPU/AMDGPUUnifyMetadata.cpp @@ -38,22 +38,14 @@ namespace { } // end namespace kOCLMD /// \brief Unify multiple OpenCL metadata due to linking. - class AMDGPUUnifyMetadata : public FunctionPass { + class AMDGPUUnifyMetadata : public ModulePass { public: static char ID; - - explicit AMDGPUUnifyMetadata() : FunctionPass(ID) {} + explicit AMDGPUUnifyMetadata() : ModulePass(ID) {}; private: - // This should really be a module pass but we have to run it as early - // as possible, so given function passes are executed first and - // TargetMachine::addEarlyAsPossiblePasses() expects only function passes - // it has to be a function pass. virtual bool runOnModule(Module &M); - // \todo: Convert to a module pass. - bool runOnFunction(Function &F) override; - /// \brief Unify version metadata. /// \return true if changes are made. /// Assume the named metadata has operands each of which is a pair of @@ -126,7 +118,7 @@ INITIALIZE_PASS(AMDGPUUnifyMetadata, "amdgpu-unify-metadata", "Unify multiple OpenCL metadata due to linking", false, false) -FunctionPass* llvm::createAMDGPUUnifyMetadataPass() { +ModulePass* llvm::createAMDGPUUnifyMetadataPass() { return new AMDGPUUnifyMetadata(); } @@ -152,7 +144,3 @@ bool AMDGPUUnifyMetadata::runOnModule(Module &M) { return Changed; } - -bool AMDGPUUnifyMetadata::runOnFunction(Function &F) { - return runOnModule(*F.getParent()); -} diff --git a/llvm/test/CodeGen/AMDGPU/unify-metadata.ll b/llvm/test/CodeGen/AMDGPU/unify-metadata.ll index 9549b08ffee..d96583e71f1 100644 --- a/llvm/test/CodeGen/AMDGPU/unify-metadata.ll +++ b/llvm/test/CodeGen/AMDGPU/unify-metadata.ll @@ -14,10 +14,6 @@ ; ALL-DAG: ![[USED_EXT_1]] = !{!"cl_khr_fp16"} ; ALL-DAG: ![[USED_EXT_2]] = !{!"cl_doubles"} -define void @test() { - ret void -} - !opencl.ocl.version = !{!1, !0, !0, !0} !llvm.ident = !{!2, !2, !2, !2, !6} !opencl.used.extensions = !{!3, !3, !4, !5} |