Skip to content

Commit 76d633d

Browse files
author
joaosaffran
committed
refactoring
1 parent 1276a5b commit 76d633d

File tree

3 files changed

+44
-22
lines changed

3 files changed

+44
-22
lines changed

llvm/lib/Target/DirectX/DXContainerGlobals.cpp

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -160,18 +160,17 @@ void DXContainerGlobals::addRootSignature(Module &M,
160160

161161
assert(MMI.EntryPropertyVec.size() == 1);
162162

163-
auto &RSA = getAnalysis<RootSignatureAnalysisWrapper>();
163+
auto &RSA = getAnalysis<RootSignatureAnalysisWrapper>().getRSInfo();
164164
const Function *EntryFunction = MMI.EntryPropertyVec[0].Entry;
165-
const auto &FuncRs = RSA.find(EntryFunction);
165+
const auto &RS = RSA.getDescForFunction(EntryFunction);
166166

167-
if (FuncRs == RSA.end())
167+
if (!RS )
168168
return;
169169

170-
const RootSignatureDesc &RS = FuncRs->second;
171170
SmallString<256> Data;
172171
raw_svector_ostream OS(Data);
173172

174-
RS.write(OS);
173+
RS->write(OS);
175174

176175
Constant *Constant =
177176
ConstantDataArray::getString(M.getContext(), Data, /*AddNull*/ false);

llvm/lib/Target/DirectX/DXILRootSignature.cpp

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -554,18 +554,17 @@ analyzeModule(Module &M) {
554554

555555
AnalysisKey RootSignatureAnalysis::Key;
556556

557-
SmallDenseMap<const Function *, mcdxbc::RootSignatureDesc>
558-
RootSignatureAnalysis::run(Module &M, ModuleAnalysisManager &AM) {
559-
return analyzeModule(M);
557+
RootSignatureBindingInfo RootSignatureAnalysis::run(Module &M,
558+
ModuleAnalysisManager &AM) {
559+
return RootSignatureBindingInfo(analyzeModule(M));
560560
}
561561

562562
//===----------------------------------------------------------------------===//
563563

564564
PreservedAnalyses RootSignatureAnalysisPrinter::run(Module &M,
565565
ModuleAnalysisManager &AM) {
566566

567-
SmallDenseMap<const Function *, mcdxbc::RootSignatureDesc> &RSDMap =
568-
AM.getResult<RootSignatureAnalysis>(M);
567+
RootSignatureBindingInfo &RSDMap = AM.getResult<RootSignatureAnalysis>(M);
569568

570569
OS << "Root Signature Definitions"
571570
<< "\n";
@@ -636,7 +635,8 @@ PreservedAnalyses RootSignatureAnalysisPrinter::run(Module &M,
636635

637636
//===----------------------------------------------------------------------===//
638637
bool RootSignatureAnalysisWrapper::runOnModule(Module &M) {
639-
FuncToRsMap = analyzeModule(M);
638+
FuncToRsMap = std::make_unique<RootSignatureBindingInfo>(
639+
RootSignatureBindingInfo(analyzeModule(M)));
640640
return false;
641641
}
642642

llvm/lib/Target/DirectX/DXILRootSignature.h

Lines changed: 34 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -33,16 +33,43 @@ enum class RootSignatureElementKind {
3333
CBV = 5,
3434
DescriptorTable = 6,
3535
};
36+
37+
class RootSignatureBindingInfo {
38+
private:
39+
SmallDenseMap<const Function *, mcdxbc::RootSignatureDesc> FuncToRsMap;
40+
41+
public:
42+
using iterator =
43+
SmallDenseMap<const Function *, mcdxbc::RootSignatureDesc>::iterator;
44+
45+
RootSignatureBindingInfo () = default;
46+
RootSignatureBindingInfo(SmallDenseMap<const Function *, mcdxbc::RootSignatureDesc> Map) : FuncToRsMap(Map) {};
47+
48+
iterator find(const Function *F) { return FuncToRsMap.find(F); }
49+
50+
iterator end() { return FuncToRsMap.end(); }
51+
52+
std::optional<mcdxbc::RootSignatureDesc> getDescForFunction(const Function* F) {
53+
const auto FuncRs = find(F);
54+
if (FuncRs == end())
55+
return std::nullopt;
56+
57+
return FuncRs->second;
58+
}
59+
60+
};
61+
3662
class RootSignatureAnalysis : public AnalysisInfoMixin<RootSignatureAnalysis> {
3763
friend AnalysisInfoMixin<RootSignatureAnalysis>;
3864
static AnalysisKey Key;
3965

4066
public:
41-
RootSignatureAnalysis() = default;
4267

43-
using Result = SmallDenseMap<const Function *, mcdxbc::RootSignatureDesc>;
68+
RootSignatureAnalysis() = default;
4469

45-
SmallDenseMap<const Function *, mcdxbc::RootSignatureDesc>
70+
using Result = RootSignatureBindingInfo;
71+
72+
RootSignatureBindingInfo
4673
run(Module &M, ModuleAnalysisManager &AM);
4774
};
4875

@@ -52,20 +79,16 @@ class RootSignatureAnalysis : public AnalysisInfoMixin<RootSignatureAnalysis> {
5279
/// passes which run through the legacy pass manager.
5380
class RootSignatureAnalysisWrapper : public ModulePass {
5481
private:
55-
SmallDenseMap<const Function *, mcdxbc::RootSignatureDesc> FuncToRsMap;
82+
std::unique_ptr<RootSignatureBindingInfo> FuncToRsMap;
5683

5784
public:
5885
static char ID;
86+
using Result = RootSignatureBindingInfo;
5987

6088
RootSignatureAnalysisWrapper() : ModulePass(ID) {}
6189

62-
using iterator =
63-
SmallDenseMap<const Function *, mcdxbc::RootSignatureDesc>::iterator;
64-
65-
iterator find(const Function *F) { return FuncToRsMap.find(F); }
66-
67-
iterator end() { return FuncToRsMap.end(); }
68-
90+
RootSignatureBindingInfo& getRSInfo() {return *FuncToRsMap;}
91+
6992
bool runOnModule(Module &M) override;
7093

7194
void getAnalysisUsage(AnalysisUsage &AU) const override;

0 commit comments

Comments
 (0)