Skip to content

Commit dc7b8b1

Browse files
committed
Remove setAnalyses(); pass analysis in getAdvisor
1 parent b002c52 commit dc7b8b1

File tree

4 files changed

+19
-48
lines changed

4 files changed

+19
-48
lines changed

llvm/include/llvm/CodeGen/RegAllocEvictionAdvisor.h

Lines changed: 6 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -170,22 +170,13 @@ class RegAllocEvictionAdvisorProvider {
170170
llvm::function_ref<float()> GetReward) {}
171171

172172
virtual std::unique_ptr<RegAllocEvictionAdvisor>
173-
getAdvisor(const MachineFunction &MF, const RAGreedy &RA) = 0;
174-
175-
/// We create this provider in doInitialization which doesn't have these
176-
/// analyses. For NPM, we do have them in run(MachineFunction&)
177-
virtual void setAnalyses(MachineBlockFrequencyInfo *MBFI,
178-
MachineLoopInfo *Loops) {
179-
this->MBFI = MBFI;
180-
this->Loops = Loops;
181-
}
173+
getAdvisor(const MachineFunction &MF, const RAGreedy &RA,
174+
MachineBlockFrequencyInfo *MBFI, MachineLoopInfo *Loops) = 0;
182175

183176
AdvisorMode getAdvisorMode() const { return Mode; }
184177

185178
protected:
186179
LLVMContext &Ctx;
187-
MachineBlockFrequencyInfo *MBFI;
188-
MachineLoopInfo *Loops;
189180

190181
private:
191182
const AdvisorMode Mode;
@@ -215,8 +206,10 @@ class RegAllocEvictionAdvisorAnalysisLegacy : public ImmutablePass {
215206
static char ID;
216207

217208
/// Get an advisor for the given context (i.e. machine function, etc)
218-
virtual std::unique_ptr<RegAllocEvictionAdvisorProvider>&
219-
getProvider() = 0;
209+
std::unique_ptr<RegAllocEvictionAdvisorProvider> &getProvider() {
210+
return Provider;
211+
}
212+
220213
AdvisorMode getAdvisorMode() const { return Mode; }
221214
virtual void logRewardIfNeeded(const MachineFunction &MF,
222215
llvm::function_ref<float()> GetReward) {};

llvm/lib/CodeGen/MLRegAllocEvictAdvisor.cpp

Lines changed: 4 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -392,7 +392,8 @@ class ReleaseModeEvictionAdvisorProvider final
392392
}
393393

394394
std::unique_ptr<RegAllocEvictionAdvisor>
395-
getAdvisor(const MachineFunction &MF, const RAGreedy &RA) override {
395+
getAdvisor(const MachineFunction &MF, const RAGreedy &RA,
396+
MachineBlockFrequencyInfo *MBFI, MachineLoopInfo *Loops) override {
396397
if (!Runner) {
397398
if (InteractiveChannelBaseName.empty())
398399
Runner = std::make_unique<ReleaseModeModelRunner<CompiledModelType>>(
@@ -420,14 +421,6 @@ class ReleaseModeEvictionAdvisorAnalysisLegacy final
420421
ReleaseModeEvictionAdvisorAnalysisLegacy()
421422
: RegAllocEvictionAdvisorAnalysisLegacy(AdvisorMode::Release) {}
422423

423-
std::unique_ptr<RegAllocEvictionAdvisorProvider>&
424-
getProvider() override {
425-
auto *MBFI = &getAnalysis<MachineBlockFrequencyInfoWrapperPass>().getMBFI();
426-
auto *Loops = &getAnalysis<MachineLoopInfoWrapperPass>().getLI();
427-
Provider->setAnalyses(MBFI, Loops);
428-
return Provider;
429-
}
430-
431424
void logRewardIfNeeded(const MachineFunction &MF,
432425
llvm::function_ref<float()> GetReward) override {
433426
// No-op in release mode
@@ -448,9 +441,6 @@ class ReleaseModeEvictionAdvisorAnalysisLegacy final
448441
AU.addRequired<MachineLoopInfoWrapperPass>();
449442
RegAllocEvictionAdvisorAnalysisLegacy::getAnalysisUsage(AU);
450443
}
451-
452-
private:
453-
// std::unique_ptr<ReleaseModeEvictionAdvisorProvider> Provider;
454444
};
455445

456446
// ===================================
@@ -566,7 +556,8 @@ class DevelopmentModeEvictionAdvisorProvider final
566556
}
567557

568558
std::unique_ptr<RegAllocEvictionAdvisor>
569-
getAdvisor(const MachineFunction &MF, const RAGreedy &RA) override {
559+
getAdvisor(const MachineFunction &MF, const RAGreedy &RA,
560+
MachineBlockFrequencyInfo *MBFI, MachineLoopInfo *Loops) override {
570561
if (!Runner)
571562
return nullptr;
572563
if (Log)
@@ -602,14 +593,6 @@ class DevelopmentModeEvictionAdvisorAnalysisLegacy final
602593
Provider->logRewardIfNeeded(MF, GetReward);
603594
}
604595

605-
std::unique_ptr<RegAllocEvictionAdvisorProvider>&
606-
getProvider() override {
607-
auto *MBFI = &getAnalysis<MachineBlockFrequencyInfoWrapperPass>().getMBFI();
608-
auto *Loops = &getAnalysis<MachineLoopInfoWrapperPass>().getLI();
609-
Provider->setAnalyses(MBFI, Loops);
610-
return Provider;
611-
}
612-
613596
// support for isa<> and dyn_cast.
614597
static bool classof(const RegAllocEvictionAdvisorAnalysisLegacy *R) {
615598
return R->getAdvisorMode() == AdvisorMode::Development;

llvm/lib/CodeGen/RegAllocEvictionAdvisor.cpp

Lines changed: 4 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -83,7 +83,8 @@ class DefaultEvictionAdvisorProvider final
8383
}
8484

8585
std::unique_ptr<RegAllocEvictionAdvisor>
86-
getAdvisor(const MachineFunction &MF, const RAGreedy &RA) override {
86+
getAdvisor(const MachineFunction &MF, const RAGreedy &RA,
87+
MachineBlockFrequencyInfo *, MachineLoopInfo *) override {
8788
return std::make_unique<DefaultEvictionAdvisor>(MF, RA);
8889
}
8990
};
@@ -95,12 +96,6 @@ class DefaultEvictionAdvisorAnalysisLegacy final
9596
: RegAllocEvictionAdvisorAnalysisLegacy(AdvisorMode::Default),
9697
NotAsRequested(NotAsRequested) {}
9798

98-
std::unique_ptr<RegAllocEvictionAdvisorProvider>&
99-
getProvider() override {
100-
// MBFI and Loops not required here.
101-
return Provider;
102-
}
103-
10499
bool doInitialization(Module &M) override {
105100
Provider.reset(
106101
new DefaultEvictionAdvisorProvider(NotAsRequested, M.getContext()));
@@ -125,22 +120,19 @@ void RegAllocEvictionAdvisorAnalysis::initializeProvider(
125120
return;
126121
if (Mode == RegAllocEvictionAdvisorAnalysisLegacy::AdvisorMode::Default)
127122
Provider.reset(
128-
new DefaultEvictionAdvisorProvider(/*NotAsRequested*/ false, Ctx));
123+
new DefaultEvictionAdvisorProvider(/*NotAsRequested=*/false, Ctx));
129124
else
130125
initializeMLProvider(Mode, Ctx);
131126
if (!Provider)
132127
Provider.reset(
133-
new DefaultEvictionAdvisorProvider(/*NotAsRequested*/ true, Ctx));
128+
new DefaultEvictionAdvisorProvider(/*NotAsRequested=*/true, Ctx));
134129
}
135130

136131
RegAllocEvictionAdvisorAnalysis::Result
137132
RegAllocEvictionAdvisorAnalysis::run(MachineFunction &MF,
138133
MachineFunctionAnalysisManager &MFAM) {
139134
// Lazy initialization of the provider.
140135
initializeProvider(::Mode, MF.getFunction().getContext());
141-
auto *MBFI = &MFAM.getResult<MachineBlockFrequencyAnalysis>(MF);
142-
auto *Loops = &MFAM.getResult<MachineLoopAnalysis>(MF);
143-
Provider->setAnalyses(MBFI, Loops);
144136
return Result{Provider.get()};
145137
}
146138

llvm/lib/CodeGen/RegAllocGreedy.cpp

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2747,8 +2747,11 @@ bool RAGreedy::runOnMachineFunction(MachineFunction &mf) {
27472747
: TRI->reverseLocalAssignment();
27482748

27492749
ExtraInfo.emplace();
2750-
EvictAdvisor =
2751-
getAnalysis<RegAllocEvictionAdvisorAnalysisLegacy>().getProvider()->getAdvisor(*MF, *this);
2750+
2751+
auto &EvictAdvisorProvider =
2752+
getAnalysis<RegAllocEvictionAdvisorAnalysisLegacy>().getProvider();
2753+
EvictAdvisor = EvictAdvisorProvider->getAdvisor(*MF, *this, MBFI, Loops);
2754+
27522755
PriorityAdvisor =
27532756
getAnalysis<RegAllocPriorityAdvisorAnalysis>().getAdvisor(*MF, *this);
27542757

0 commit comments

Comments
 (0)