Skip to content

Commit c718763

Browse files
committed
Add wrapper pass
1 parent d79900c commit c718763

File tree

4 files changed

+54
-2
lines changed

4 files changed

+54
-2
lines changed

llvm/include/llvm/Analysis/DXILResource.h

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -677,6 +677,7 @@ class DXILResourceBindingInfo {
677677
}
678678

679679
friend class DXILResourceBindingAnalysis;
680+
friend class DXILResourceBindingWrapperPass;
680681
};
681682

682683
class 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

llvm/include/llvm/InitializePasses.h

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -84,8 +84,9 @@ void initializeDAHPass(PassRegistry &);
8484
void initializeDCELegacyPassPass(PassRegistry &);
8585
void initializeDXILMetadataAnalysisWrapperPassPass(PassRegistry &);
8686
void initializeDXILMetadataAnalysisWrapperPrinterPass(PassRegistry &);
87-
void initializeDXILResourceWrapperPassPass(PassRegistry &);
87+
void initializeDXILResourceBindingWrapperPassPass(PassRegistry &);
8888
void initializeDXILResourceTypeWrapperPassPass(PassRegistry &);
89+
void initializeDXILResourceWrapperPassPass(PassRegistry &);
8990
void initializeDeadMachineInstructionElimPass(PassRegistry &);
9091
void initializeDebugifyMachineModulePass(PassRegistry &);
9192
void initializeDependenceAnalysisWrapperPassPass(PassRegistry &);

llvm/lib/Analysis/Analysis.cpp

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff 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);

llvm/lib/Analysis/DXILResource.cpp

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1077,3 +1077,33 @@ char DXILResourceWrapperPass::ID = 0;
10771077
ModulePass *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+
}

0 commit comments

Comments
 (0)