Skip to content

Commit 2054a81

Browse files
committed
use the provider as the analysis result
Avoid setting the advisor from the legacy wrapper after setting all other analyses.
1 parent 249b669 commit 2054a81

File tree

4 files changed

+20
-18
lines changed

4 files changed

+20
-18
lines changed

llvm/include/llvm/CodeGen/RegAllocPriorityAdvisor.h

+3-2
Original file line numberDiff line numberDiff line change
@@ -128,8 +128,7 @@ class RegAllocPriorityAdvisorAnalysisLegacy : public ImmutablePass {
128128
static char ID;
129129

130130
/// Get an advisor for the given context (i.e. machine function, etc)
131-
virtual std::unique_ptr<RegAllocPriorityAdvisor>
132-
getAdvisor(const MachineFunction &MF, const RAGreedy &RA) = 0;
131+
virtual std::unique_ptr<RegAllocPriorityAdvisorProvider> &getProvider() = 0;
133132
AdvisorMode getAdvisorMode() const { return Mode; }
134133
virtual void logRewardIfNeeded(const MachineFunction &MF,
135134
llvm::function_ref<float()> GetReward) {};
@@ -141,6 +140,8 @@ class RegAllocPriorityAdvisorAnalysisLegacy : public ImmutablePass {
141140
AU.setPreservesAll();
142141
}
143142

143+
std::unique_ptr<RegAllocPriorityAdvisorProvider> Provider;
144+
144145
private:
145146
StringRef getPassName() const override;
146147
const AdvisorMode Mode;

llvm/lib/CodeGen/MLRegAllocPriorityAdvisor.cpp

+10-9
Original file line numberDiff line numberDiff line change
@@ -167,13 +167,17 @@ class ReleaseModePriorityAdvisorAnalysisLegacy final
167167
RegAllocPriorityAdvisorAnalysisLegacy::getAnalysisUsage(AU);
168168
}
169169

170-
std::unique_ptr<RegAllocPriorityAdvisor>
171-
getAdvisor(const MachineFunction &MF, const RAGreedy &RA) override {
170+
std::unique_ptr<RegAllocPriorityAdvisorProvider> &getProvider() override {
172171
Provider->setAnalyses(&getAnalysis<SlotIndexesWrapperPass>().getSI());
173-
return Provider->getAdvisor(MF, RA);
172+
return Provider;
174173
}
175174

176-
std::unique_ptr<ReleaseModePriorityAdvisorProvider> Provider;
175+
bool doInitialization(Module &M) override {
176+
Provider = std::make_unique<ReleaseModePriorityAdvisorProvider>();
177+
return false;
178+
}
179+
180+
// std::unique_ptr<ReleaseModePriorityAdvisorProvider> Provider;
177181
};
178182

179183
// ===================================
@@ -315,13 +319,10 @@ class DevelopmentModePriorityAdvisorAnalysisLegacy final
315319
;
316320
}
317321

318-
std::unique_ptr<RegAllocPriorityAdvisor>
319-
getAdvisor(const MachineFunction &MF, const RAGreedy &RA) override {
322+
std::unique_ptr<RegAllocPriorityAdvisorProvider> &getProvider() override {
320323
Provider->setAnalyses(&getAnalysis<SlotIndexesWrapperPass>().getSI());
321-
return Provider->getAdvisor(MF, RA);
324+
return Provider;
322325
}
323-
324-
std::unique_ptr<DevelopmentModePriorityAdvisorProvider> Provider;
325326
};
326327
#endif //#ifdef LLVM_HAVE_TFLITE
327328

llvm/lib/CodeGen/RegAllocGreedy.cpp

+3-3
Original file line numberDiff line numberDiff line change
@@ -2749,9 +2749,9 @@ bool RAGreedy::runOnMachineFunction(MachineFunction &mf) {
27492749
ExtraInfo.emplace();
27502750
EvictAdvisor =
27512751
getAnalysis<RegAllocEvictionAdvisorAnalysisLegacy>().getProvider()->getAdvisor(*MF, *this);
2752-
PriorityAdvisor =
2753-
getAnalysis<RegAllocPriorityAdvisorAnalysisLegacy>().getAdvisor(*MF,
2754-
*this);
2752+
PriorityAdvisor = getAnalysis<RegAllocPriorityAdvisorAnalysisLegacy>()
2753+
.getProvider()
2754+
->getAdvisor(*MF, *this);
27552755

27562756
VRAI = std::make_unique<VirtRegAuxInfo>(*MF, *LIS, *VRM, *Loops, *MBFI);
27572757
SpillerInstance.reset(createInlineSpiller(*this, *MF, *VRM, *VRAI));

llvm/lib/CodeGen/RegAllocPriorityAdvisor.cpp

+4-4
Original file line numberDiff line numberDiff line change
@@ -78,19 +78,19 @@ class DefaultPriorityAdvisorAnalysisLegacy final
7878
RegAllocPriorityAdvisorAnalysisLegacy::getAnalysisUsage(AU);
7979
}
8080

81-
std::unique_ptr<RegAllocPriorityAdvisor>
82-
getAdvisor(const MachineFunction &MF, const RAGreedy &RA) override {
81+
std::unique_ptr<RegAllocPriorityAdvisorProvider> &getProvider() override {
8382
Provider->setAnalyses(&getAnalysis<SlotIndexesWrapperPass>().getSI());
84-
return Provider->getAdvisor(MF, RA);
83+
return Provider;
8584
}
85+
8686
bool doInitialization(Module &M) override {
8787
Provider.reset(
8888
new DefaultPriorityAdvisorProvider(NotAsRequested, M.getContext()));
8989
return false;
9090
}
9191

9292
const bool NotAsRequested;
93-
std::unique_ptr<DefaultPriorityAdvisorProvider> Provider;
93+
// std::unique_ptr<DefaultPriorityAdvisorProvider> Provider;
9494
};
9595
} // namespace
9696

0 commit comments

Comments
 (0)