[llvm] [DirectX] Update `DXILRootSignature` to not run analysis after data has been parsed (PR #146783)
Sarah Spall via llvm-commits
llvm-commits at lists.llvm.org
Mon Jul 7 07:59:28 PDT 2025
================
@@ -33,17 +35,47 @@ enum class RootSignatureElementKind {
CBV = 5,
DescriptorTable = 6,
};
+
+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;
public:
RootSignatureAnalysis() = default;
- using Result = SmallDenseMap<const Function *, mcdxbc::RootSignatureDesc>;
+ using Result = RootSignatureBindingInfo;
----------------
spall wrote:
Why create a type alias here? Why not just put 'RootSignatureBindingInfo' inline? It looks like its only used one place.
https://github.com/llvm/llvm-project/pull/146783
More information about the llvm-commits
mailing list