Skip to content

Commit ca1317d

Browse files
committed
Set analyses in constructors
1 parent d2885be commit ca1317d

File tree

2 files changed

+44
-41
lines changed

2 files changed

+44
-41
lines changed

llvm/lib/CodeGen/RegAllocGreedy.cpp

+40-41
Original file line numberDiff line numberDiff line change
@@ -206,29 +206,30 @@ void RAGreedyPass::printPipeline(raw_ostream &OS, function_ref<StringRef(StringR
206206
OS << "greedy<" << FilterName << '>';
207207
}
208208

209+
RAGreedy::RequiredAnalyses::RequiredAnalyses(
210+
MachineFunction &MF, MachineFunctionAnalysisManager &MFAM) {
211+
LIS = &MFAM.getResult<LiveIntervalsAnalysis>(MF);
212+
LRM = &MFAM.getResult<LiveRegMatrixAnalysis>(MF);
213+
LSS = &MFAM.getResult<LiveStacksAnalysis>(MF);
214+
Indexes = &MFAM.getResult<SlotIndexesAnalysis>(MF);
215+
MBFI = &MFAM.getResult<MachineBlockFrequencyAnalysis>(MF);
216+
DomTree = &MFAM.getResult<MachineDominatorTreeAnalysis>(MF);
217+
ORE = &MFAM.getResult<MachineOptimizationRemarkEmitterAnalysis>(MF);
218+
Loops = &MFAM.getResult<MachineLoopAnalysis>(MF);
219+
Bundles = &MFAM.getResult<EdgeBundlesAnalysis>(MF);
220+
SpillPlacer = &MFAM.getResult<SpillPlacementAnalysis>(MF);
221+
DebugVars = &MFAM.getResult<LiveDebugVariablesAnalysis>(MF);
222+
EvictProvider = MFAM.getResult<RegAllocEvictionAdvisorAnalysis>(MF).Provider;
223+
PriorityProvider =
224+
MFAM.getResult<RegAllocPriorityAdvisorAnalysis>(MF).Provider;
225+
VRM = &MFAM.getResult<VirtRegMapAnalysis>(MF);
226+
}
227+
209228
PreservedAnalyses RAGreedyPass::run(MachineFunction &MF,
210229
MachineFunctionAnalysisManager &MFAM) {
211230
MFPropsModifier _(*this, MF);
212231

213-
RAGreedy::RequiredAnalyses Analyses;
214-
215-
Analyses.LIS = &MFAM.getResult<LiveIntervalsAnalysis>(MF);
216-
Analyses.LRM = &MFAM.getResult<LiveRegMatrixAnalysis>(MF);
217-
Analyses.LSS = &MFAM.getResult<LiveStacksAnalysis>(MF);
218-
Analyses.Indexes = &MFAM.getResult<SlotIndexesAnalysis>(MF);
219-
Analyses.MBFI = &MFAM.getResult<MachineBlockFrequencyAnalysis>(MF);
220-
Analyses.DomTree = &MFAM.getResult<MachineDominatorTreeAnalysis>(MF);
221-
Analyses.ORE = &MFAM.getResult<MachineOptimizationRemarkEmitterAnalysis>(MF);
222-
Analyses.Loops = &MFAM.getResult<MachineLoopAnalysis>(MF);
223-
Analyses.Bundles = &MFAM.getResult<EdgeBundlesAnalysis>(MF);
224-
Analyses.SpillPlacer = &MFAM.getResult<SpillPlacementAnalysis>(MF);
225-
Analyses.DebugVars = &MFAM.getResult<LiveDebugVariablesAnalysis>(MF);
226-
Analyses.EvictProvider =
227-
MFAM.getResult<RegAllocEvictionAdvisorAnalysis>(MF).Provider;
228-
Analyses.PriorityProvider =
229-
MFAM.getResult<RegAllocPriorityAdvisorAnalysis>(MF).Provider;
230-
Analyses.VRM = &MFAM.getResult<VirtRegMapAnalysis>(MF);
231-
232+
RAGreedy::RequiredAnalyses Analyses(MF, MFAM);
232233
RAGreedy Impl(Analyses, Opts.Filter);
233234

234235
bool Changed = Impl.run(MF);
@@ -246,29 +247,27 @@ PreservedAnalyses RAGreedyPass::run(MachineFunction &MF,
246247
return PA;
247248
}
248249

249-
bool RAGreedyLegacy::runOnMachineFunction(MachineFunction &MF) {
250-
251-
RAGreedy::RequiredAnalyses Analyses;
252-
Analyses.VRM = &getAnalysis<VirtRegMapWrapperLegacy>().getVRM();
253-
Analyses.LIS = &getAnalysis<LiveIntervalsWrapperPass>().getLIS();
254-
Analyses.LSS = &getAnalysis<LiveStacksWrapperLegacy>().getLS();
255-
Analyses.LRM = &getAnalysis<LiveRegMatrixWrapperLegacy>().getLRM();
256-
Analyses.Indexes = &getAnalysis<SlotIndexesWrapperPass>().getSI();
257-
Analyses.MBFI =
258-
&getAnalysis<MachineBlockFrequencyInfoWrapperPass>().getMBFI();
259-
Analyses.DomTree =
260-
&getAnalysis<MachineDominatorTreeWrapperPass>().getDomTree();
261-
Analyses.ORE = &getAnalysis<MachineOptimizationRemarkEmitterPass>().getORE();
262-
Analyses.Loops = &getAnalysis<MachineLoopInfoWrapperPass>().getLI();
263-
Analyses.Bundles = &getAnalysis<EdgeBundlesWrapperLegacy>().getEdgeBundles();
264-
Analyses.SpillPlacer =
265-
&getAnalysis<SpillPlacementWrapperLegacy>().getResult();
266-
Analyses.DebugVars = &getAnalysis<LiveDebugVariablesWrapperLegacy>().getLDV();
267-
Analyses.EvictProvider =
268-
&getAnalysis<RegAllocEvictionAdvisorAnalysisLegacy>().getProvider();
269-
Analyses.PriorityProvider =
270-
&getAnalysis<RegAllocPriorityAdvisorAnalysisLegacy>().getProvider();
250+
RAGreedy::RequiredAnalyses::RequiredAnalyses(Pass &P) {
251+
VRM = &P.getAnalysis<VirtRegMapWrapperLegacy>().getVRM();
252+
LIS = &P.getAnalysis<LiveIntervalsWrapperPass>().getLIS();
253+
LSS = &P.getAnalysis<LiveStacksWrapperLegacy>().getLS();
254+
LRM = &P.getAnalysis<LiveRegMatrixWrapperLegacy>().getLRM();
255+
Indexes = &P.getAnalysis<SlotIndexesWrapperPass>().getSI();
256+
MBFI = &P.getAnalysis<MachineBlockFrequencyInfoWrapperPass>().getMBFI();
257+
DomTree = &P.getAnalysis<MachineDominatorTreeWrapperPass>().getDomTree();
258+
ORE = &P.getAnalysis<MachineOptimizationRemarkEmitterPass>().getORE();
259+
Loops = &P.getAnalysis<MachineLoopInfoWrapperPass>().getLI();
260+
Bundles = &P.getAnalysis<EdgeBundlesWrapperLegacy>().getEdgeBundles();
261+
SpillPlacer = &P.getAnalysis<SpillPlacementWrapperLegacy>().getResult();
262+
DebugVars = &P.getAnalysis<LiveDebugVariablesWrapperLegacy>().getLDV();
263+
EvictProvider =
264+
&P.getAnalysis<RegAllocEvictionAdvisorAnalysisLegacy>().getProvider();
265+
PriorityProvider =
266+
&P.getAnalysis<RegAllocPriorityAdvisorAnalysisLegacy>().getProvider();
267+
}
271268

269+
bool RAGreedyLegacy::runOnMachineFunction(MachineFunction &MF) {
270+
RAGreedy::RequiredAnalyses Analyses(*this);
272271
RAGreedy Impl(Analyses, F);
273272
return Impl.run(MF);
274273
}

llvm/lib/CodeGen/RegAllocGreedy.h

+4
Original file line numberDiff line numberDiff line change
@@ -79,6 +79,10 @@ class LLVM_LIBRARY_VISIBILITY RAGreedy : public RegAllocBase,
7979
// Proxies for eviction and priority advisors
8080
RegAllocEvictionAdvisorProvider *EvictProvider;
8181
RegAllocPriorityAdvisorProvider *PriorityProvider;
82+
83+
RequiredAnalyses() {}
84+
RequiredAnalyses(Pass &P);
85+
RequiredAnalyses(MachineFunction &MF, MachineFunctionAnalysisManager &MFAM);
8286
};
8387

8488
// Interface to eviction advisers

0 commit comments

Comments
 (0)