File tree Expand file tree Collapse file tree 4 files changed +54
-2
lines changed Expand file tree Collapse file tree 4 files changed +54
-2
lines changed Original file line number Diff line number Diff line change @@ -677,6 +677,7 @@ class DXILResourceBindingInfo {
677677 }
678678
679679 friend class DXILResourceBindingAnalysis ;
680+ friend class DXILResourceBindingWrapperPass ;
680681};
681682
682683class DXILResourceBindingAnalysis
@@ -691,6 +692,25 @@ class DXILResourceBindingAnalysis
691692 DXILResourceBindingInfo run (Module &M, ModuleAnalysisManager &AM);
692693};
693694
695+ class DXILResourceBindingWrapperPass : public ModulePass {
696+ std::unique_ptr<DXILResourceBindingInfo> BindingInfo;
697+
698+ public:
699+ static char ID;
700+
701+ DXILResourceBindingWrapperPass ();
702+ ~DXILResourceBindingWrapperPass () override ;
703+
704+ DXILResourceBindingInfo &getBindingInfo () { return *BindingInfo; }
705+ const DXILResourceBindingInfo &getBindingInfo () const { return *BindingInfo; }
706+
707+ void getAnalysisUsage (AnalysisUsage &AU) const override ;
708+ bool runOnModule (Module &M) override ;
709+ void releaseMemory () override ;
710+ };
711+
712+ ModulePass *createDXILResourceBindingWrapperPassPass ();
713+
694714} // namespace llvm
695715
696716#endif // LLVM_ANALYSIS_DXILRESOURCE_H
Original file line number Diff line number Diff line change @@ -84,8 +84,9 @@ void initializeDAHPass(PassRegistry &);
8484void initializeDCELegacyPassPass (PassRegistry &);
8585void initializeDXILMetadataAnalysisWrapperPassPass (PassRegistry &);
8686void initializeDXILMetadataAnalysisWrapperPrinterPass (PassRegistry &);
87- void initializeDXILResourceWrapperPassPass (PassRegistry &);
87+ void initializeDXILResourceBindingWrapperPassPass (PassRegistry &);
8888void initializeDXILResourceTypeWrapperPassPass (PassRegistry &);
89+ void initializeDXILResourceWrapperPassPass (PassRegistry &);
8990void initializeDeadMachineInstructionElimPass (PassRegistry &);
9091void initializeDebugifyMachineModulePass (PassRegistry &);
9192void initializeDependenceAnalysisWrapperPassPass (PassRegistry &);
Original file line number Diff line number Diff line change @@ -27,8 +27,9 @@ void llvm::initializeAnalysis(PassRegistry &Registry) {
2727 initializeCallGraphViewerPass (Registry);
2828 initializeCycleInfoWrapperPassPass (Registry);
2929 initializeDXILMetadataAnalysisWrapperPassPass (Registry);
30- initializeDXILResourceWrapperPassPass (Registry);
30+ initializeDXILResourceBindingWrapperPassPass (Registry);
3131 initializeDXILResourceTypeWrapperPassPass (Registry);
32+ initializeDXILResourceWrapperPassPass (Registry);
3233 initializeDependenceAnalysisWrapperPassPass (Registry);
3334 initializeDominanceFrontierWrapperPassPass (Registry);
3435 initializeDomViewerWrapperPassPass (Registry);
Original file line number Diff line number Diff line change @@ -1077,3 +1077,33 @@ char DXILResourceWrapperPass::ID = 0;
10771077ModulePass *llvm::createDXILResourceWrapperPassPass () {
10781078 return new DXILResourceWrapperPass ();
10791079}
1080+
1081+ DXILResourceBindingWrapperPass::DXILResourceBindingWrapperPass ()
1082+ : ModulePass(ID) {}
1083+
1084+ DXILResourceBindingWrapperPass::~DXILResourceBindingWrapperPass () = default ;
1085+
1086+ void DXILResourceBindingWrapperPass::getAnalysisUsage (AnalysisUsage &AU) const {
1087+ AU.addRequiredTransitive <DXILResourceTypeWrapperPass>();
1088+ AU.setPreservesAll ();
1089+ }
1090+
1091+ bool DXILResourceBindingWrapperPass::runOnModule (Module &M) {
1092+ BindingInfo.reset (new DXILResourceBindingInfo ());
1093+
1094+ DXILResourceTypeMap &DRTM =
1095+ getAnalysis<DXILResourceTypeWrapperPass>().getResourceTypeMap ();
1096+ BindingInfo->populate (M, DRTM);
1097+
1098+ return false ;
1099+ }
1100+
1101+ void DXILResourceBindingWrapperPass::releaseMemory () { BindingInfo.reset (); }
1102+
1103+ INITIALIZE_PASS (DXILResourceBindingWrapperPass, " dxil-resource-binding" ,
1104+ " DXIL Resource Binding Analysis" , false , true )
1105+ char DXILResourceBindingWrapperPass::ID = 0;
1106+
1107+ ModulePass *llvm::createDXILResourceBindingWrapperPassPass () {
1108+ return new DXILResourceWrapperPass ();
1109+ }
You can’t perform that action at this time.
0 commit comments