Revert "[DirectX][NFC] Refactor `DXILRootSignature` to follow the same patter…"
This reverts commit ca888f085cf31788e06a3fb68234bf61e55a3686.
diff --git a/llvm/lib/Target/DirectX/DXContainerGlobals.cpp b/llvm/lib/Target/DirectX/DXContainerGlobals.cpp
index b6e8ce7..9c38901 100644
--- a/llvm/lib/Target/DirectX/DXContainerGlobals.cpp
+++ b/llvm/lib/Target/DirectX/DXContainerGlobals.cpp
@@ -160,18 +160,18 @@
assert(MMI.EntryPropertyVec.size() == 1);
- auto &RSA = getAnalysis<RootSignatureAnalysisWrapper>().getRSInfo();
+ auto &RSA = getAnalysis<RootSignatureAnalysisWrapper>();
const Function *EntryFunction = MMI.EntryPropertyVec[0].Entry;
- const std::optional<mcdxbc::RootSignatureDesc> &RS =
- RSA.getDescForFunction(EntryFunction);
+ const auto &FuncRs = RSA.find(EntryFunction);
- if (!RS)
+ if (FuncRs == RSA.end())
return;
+ const RootSignatureDesc &RS = FuncRs->second;
SmallString<256> Data;
raw_svector_ostream OS(Data);
- RS->write(OS);
+ RS.write(OS);
Constant *Constant =
ConstantDataArray::getString(M.getContext(), Data, /*AddNull*/ false);
diff --git a/llvm/lib/Target/DirectX/DXILRootSignature.cpp b/llvm/lib/Target/DirectX/DXILRootSignature.cpp
index dfc8162..cfd4107 100644
--- a/llvm/lib/Target/DirectX/DXILRootSignature.cpp
+++ b/llvm/lib/Target/DirectX/DXILRootSignature.cpp
@@ -596,9 +596,9 @@
AnalysisKey RootSignatureAnalysis::Key;
-RootSignatureAnalysis::Result
+SmallDenseMap<const Function *, mcdxbc::RootSignatureDesc>
RootSignatureAnalysis::run(Module &M, ModuleAnalysisManager &AM) {
- return RootSignatureBindingInfo(analyzeModule(M));
+ return analyzeModule(M);
}
//===----------------------------------------------------------------------===//
@@ -606,7 +606,8 @@
PreservedAnalyses RootSignatureAnalysisPrinter::run(Module &M,
ModuleAnalysisManager &AM) {
- RootSignatureBindingInfo &RSDMap = AM.getResult<RootSignatureAnalysis>(M);
+ SmallDenseMap<const Function *, mcdxbc::RootSignatureDesc> &RSDMap =
+ AM.getResult<RootSignatureAnalysis>(M);
OS << "Root Signature Definitions"
<< "\n";
@@ -677,14 +678,13 @@
//===----------------------------------------------------------------------===//
bool RootSignatureAnalysisWrapper::runOnModule(Module &M) {
- FuncToRsMap = std::make_unique<RootSignatureBindingInfo>(
- RootSignatureBindingInfo(analyzeModule(M)));
+ FuncToRsMap = analyzeModule(M);
return false;
}
void RootSignatureAnalysisWrapper::getAnalysisUsage(AnalysisUsage &AU) const {
AU.setPreservesAll();
- AU.addPreserved<DXILMetadataAnalysisWrapperPass>();
+ AU.addRequired<DXILMetadataAnalysisWrapperPass>();
}
char RootSignatureAnalysisWrapper::ID = 0;
diff --git a/llvm/lib/Target/DirectX/DXILRootSignature.h b/llvm/lib/Target/DirectX/DXILRootSignature.h
index fc39b38..be5cc78 100644
--- a/llvm/lib/Target/DirectX/DXILRootSignature.h
+++ b/llvm/lib/Target/DirectX/DXILRootSignature.h
@@ -10,8 +10,6 @@
/// Root Signatures.
///
//===----------------------------------------------------------------------===//
-#ifndef LLVM_LIB_TARGET_DIRECTX_DXILROOTSIGNATURE_H
-#define LLVM_LIB_TARGET_DIRECTX_DXILROOTSIGNATURE_H
#include "llvm/ADT/DenseMap.h"
#include "llvm/Analysis/DXILMetadataAnalysis.h"
@@ -36,34 +34,6 @@
DescriptorTable = 6,
StaticSamplers = 7
};
-
-class RootSignatureBindingInfo {
-private:
- SmallDenseMap<const Function *, mcdxbc::RootSignatureDesc> FuncToRsMap;
-
-public:
- using iterator =
- SmallDenseMap<const Function *, mcdxbc::RootSignatureDesc>::iterator;
-
- RootSignatureBindingInfo() = default;
- RootSignatureBindingInfo(
- SmallDenseMap<const Function *, mcdxbc::RootSignatureDesc> Map)
- : FuncToRsMap(Map) {};
-
- iterator find(const Function *F) { return FuncToRsMap.find(F); }
-
- iterator end() { return FuncToRsMap.end(); }
-
- std::optional<mcdxbc::RootSignatureDesc>
- getDescForFunction(const Function *F) {
- const auto FuncRs = find(F);
- if (FuncRs == end())
- return std::nullopt;
-
- return FuncRs->second;
- }
-};
-
class RootSignatureAnalysis : public AnalysisInfoMixin<RootSignatureAnalysis> {
friend AnalysisInfoMixin<RootSignatureAnalysis>;
static AnalysisKey Key;
@@ -71,9 +41,10 @@
public:
RootSignatureAnalysis() = default;
- using Result = RootSignatureBindingInfo;
+ using Result = SmallDenseMap<const Function *, mcdxbc::RootSignatureDesc>;
- Result run(Module &M, ModuleAnalysisManager &AM);
+ SmallDenseMap<const Function *, mcdxbc::RootSignatureDesc>
+ run(Module &M, ModuleAnalysisManager &AM);
};
/// Wrapper pass for the legacy pass manager.
@@ -82,13 +53,19 @@
/// passes which run through the legacy pass manager.
class RootSignatureAnalysisWrapper : public ModulePass {
private:
- std::unique_ptr<RootSignatureBindingInfo> FuncToRsMap;
+ SmallDenseMap<const Function *, mcdxbc::RootSignatureDesc> FuncToRsMap;
public:
static char ID;
+
RootSignatureAnalysisWrapper() : ModulePass(ID) {}
- RootSignatureBindingInfo &getRSInfo() { return *FuncToRsMap; }
+ using iterator =
+ SmallDenseMap<const Function *, mcdxbc::RootSignatureDesc>::iterator;
+
+ iterator find(const Function *F) { return FuncToRsMap.find(F); }
+
+ iterator end() { return FuncToRsMap.end(); }
bool runOnModule(Module &M) override;
@@ -107,4 +84,3 @@
} // namespace dxil
} // namespace llvm
-#endif