Skip to content

Commit 2edd215

Browse files
author
joaosaffran
committed
refactoring
1 parent 0e8828c commit 2edd215

File tree

3 files changed

+19
-10
lines changed

3 files changed

+19
-10
lines changed

llvm/lib/Target/DirectX/DXContainerGlobals.cpp

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -162,16 +162,15 @@ void DXContainerGlobals::addRootSignature(Module &M,
162162

163163
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: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,7 @@
2828
#include "llvm/Support/ErrorHandling.h"
2929
#include "llvm/Support/raw_ostream.h"
3030
#include <cstdint>
31+
#include <memory>
3132
#include <optional>
3233
#include <utility>
3334

@@ -554,9 +555,12 @@ analyzeModule(Module &M) {
554555

555556
AnalysisKey RootSignatureAnalysis::Key;
556557

557-
RootSignatureBindingInfo RootSignatureAnalysis::run(Module &M,
558-
ModuleAnalysisManager &AM) {
559-
return RootSignatureBindingInfo(analyzeModule(M));
558+
RootSignatureAnalysis::Result
559+
RootSignatureAnalysis::run(Module &M, ModuleAnalysisManager &AM) {
560+
if (!AnalysisResult)
561+
AnalysisResult = std::make_unique<RootSignatureBindingInfo>(
562+
RootSignatureBindingInfo(analyzeModule(M)));
563+
return *AnalysisResult;
560564
}
561565

562566
//===----------------------------------------------------------------------===//
@@ -635,6 +639,8 @@ PreservedAnalyses RootSignatureAnalysisPrinter::run(Module &M,
635639

636640
//===----------------------------------------------------------------------===//
637641
bool RootSignatureAnalysisWrapper::runOnModule(Module &M) {
642+
if (HasRun)
643+
return false;
638644
FuncToRsMap = std::make_unique<RootSignatureBindingInfo>(
639645
RootSignatureBindingInfo(analyzeModule(M)));
640646
return false;

llvm/lib/Target/DirectX/DXILRootSignature.h

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@
1919
#include "llvm/IR/PassManager.h"
2020
#include "llvm/MC/DXContainerRootSignature.h"
2121
#include "llvm/Pass.h"
22+
#include <memory>
2223
#include <optional>
2324

2425
namespace llvm {
@@ -68,9 +69,11 @@ class RootSignatureAnalysis : public AnalysisInfoMixin<RootSignatureAnalysis> {
6869
RootSignatureAnalysis() = default;
6970

7071
using Result = RootSignatureBindingInfo;
71-
72-
RootSignatureBindingInfo
73-
run(Module &M, ModuleAnalysisManager &AM);
72+
73+
Result run(Module &M, ModuleAnalysisManager &AM);
74+
75+
private:
76+
std::unique_ptr<RootSignatureBindingInfo> AnalysisResult;
7477
};
7578

7679
/// Wrapper pass for the legacy pass manager.
@@ -80,6 +83,7 @@ RootSignatureAnalysis() = default;
8083
class RootSignatureAnalysisWrapper : public ModulePass {
8184
private:
8285
std::unique_ptr<RootSignatureBindingInfo> FuncToRsMap;
86+
bool HasRun = false;
8387

8488
public:
8589
static char ID;

0 commit comments

Comments
 (0)