Skip to content

Commit f92d72f

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 a5c1a65 commit f92d72f

File tree

4 files changed

+20
-18
lines changed

4 files changed

+20
-18
lines changed

llvm/include/llvm/CodeGen/RegAllocPriorityAdvisor.h

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -139,8 +139,7 @@ class RegAllocPriorityAdvisorAnalysisLegacy : public ImmutablePass {
139139
static char ID;
140140

141141
/// Get an advisor for the given context (i.e. machine function, etc)
142-
virtual std::unique_ptr<RegAllocPriorityAdvisor>
143-
getAdvisor(const MachineFunction &MF, const RAGreedy &RA) = 0;
142+
virtual std::unique_ptr<RegAllocPriorityAdvisorProvider> &getProvider() = 0;
144143
AdvisorMode getAdvisorMode() const { return Mode; }
145144
virtual void logRewardIfNeeded(const MachineFunction &MF,
146145
llvm::function_ref<float()> GetReward) {};
@@ -152,6 +151,8 @@ class RegAllocPriorityAdvisorAnalysisLegacy : public ImmutablePass {
152151
AU.setPreservesAll();
153152
}
154153

154+
std::unique_ptr<RegAllocPriorityAdvisorProvider> Provider;
155+
155156
private:
156157
StringRef getPassName() const override;
157158
const AdvisorMode Mode;

llvm/lib/CodeGen/MLRegAllocPriorityAdvisor.cpp

Lines changed: 10 additions & 9 deletions
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

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2770,9 +2770,9 @@ bool RAGreedy::runOnMachineFunction(MachineFunction &mf) {
27702770
getAnalysis<RegAllocEvictionAdvisorAnalysisLegacy>().getProvider();
27712771
EvictAdvisor = EvictAdvisorProvider.getAdvisor(*MF, *this, MBFI, Loops);
27722772

2773-
PriorityAdvisor =
2774-
getAnalysis<RegAllocPriorityAdvisorAnalysisLegacy>().getAdvisor(*MF,
2775-
*this);
2773+
PriorityAdvisor = getAnalysis<RegAllocPriorityAdvisorAnalysisLegacy>()
2774+
.getProvider()
2775+
->getAdvisor(*MF, *this);
27762776

27772777
VRAI = std::make_unique<VirtRegAuxInfo>(*MF, *LIS, *VRM, *Loops, *MBFI);
27782778
SpillerInstance.reset(

llvm/lib/CodeGen/RegAllocPriorityAdvisor.cpp

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -96,19 +96,19 @@ class DefaultPriorityAdvisorAnalysisLegacy final
9696
RegAllocPriorityAdvisorAnalysisLegacy::getAnalysisUsage(AU);
9797
}
9898

99-
std::unique_ptr<RegAllocPriorityAdvisor>
100-
getAdvisor(const MachineFunction &MF, const RAGreedy &RA) override {
99+
std::unique_ptr<RegAllocPriorityAdvisorProvider> &getProvider() override {
101100
Provider->setAnalyses(&getAnalysis<SlotIndexesWrapperPass>().getSI());
102-
return Provider->getAdvisor(MF, RA);
101+
return Provider;
103102
}
103+
104104
bool doInitialization(Module &M) override {
105105
Provider.reset(
106106
new DefaultPriorityAdvisorProvider(NotAsRequested, M.getContext()));
107107
return false;
108108
}
109109

110110
const bool NotAsRequested;
111-
std::unique_ptr<DefaultPriorityAdvisorProvider> Provider;
111+
// std::unique_ptr<DefaultPriorityAdvisorProvider> Provider;
112112
};
113113

114114
class DummyPriorityAdvisorAnalysis final

0 commit comments

Comments
 (0)