Skip to content

Commit 455990d

Browse files
vitalybukaarsenm
andauthored
Reland "SelectionDAG: Avoid using MachineFunction::getMMI" (llvm#99779)
Reverts llvm#99777 Co-authored-by: Matt Arsenault <[email protected]>
1 parent 63e1799 commit 455990d

9 files changed

+31
-16
lines changed

llvm/include/llvm/CodeGen/SelectionDAG.h

+6-3
Original file line numberDiff line numberDiff line change
@@ -245,6 +245,7 @@ class SelectionDAG {
245245

246246
ProfileSummaryInfo *PSI = nullptr;
247247
BlockFrequencyInfo *BFI = nullptr;
248+
MachineModuleInfo *MMI = nullptr;
248249

249250
/// List of non-single value types.
250251
FoldingSet<SDVTListNode> VTListMap;
@@ -459,14 +460,15 @@ class SelectionDAG {
459460
void init(MachineFunction &NewMF, OptimizationRemarkEmitter &NewORE,
460461
Pass *PassPtr, const TargetLibraryInfo *LibraryInfo,
461462
UniformityInfo *UA, ProfileSummaryInfo *PSIin,
462-
BlockFrequencyInfo *BFIin, FunctionVarLocs const *FnVarLocs);
463+
BlockFrequencyInfo *BFIin, MachineModuleInfo &MMI,
464+
FunctionVarLocs const *FnVarLocs);
463465

464466
void init(MachineFunction &NewMF, OptimizationRemarkEmitter &NewORE,
465467
MachineFunctionAnalysisManager &AM,
466468
const TargetLibraryInfo *LibraryInfo, UniformityInfo *UA,
467469
ProfileSummaryInfo *PSIin, BlockFrequencyInfo *BFIin,
468-
FunctionVarLocs const *FnVarLocs) {
469-
init(NewMF, NewORE, nullptr, LibraryInfo, UA, PSIin, BFIin, FnVarLocs);
470+
MachineModuleInfo &MMI, FunctionVarLocs const *FnVarLocs) {
471+
init(NewMF, NewORE, nullptr, LibraryInfo, UA, PSIin, BFIin, MMI, FnVarLocs);
470472
MFAM = &AM;
471473
}
472474

@@ -500,6 +502,7 @@ class SelectionDAG {
500502
OptimizationRemarkEmitter &getORE() const { return *ORE; }
501503
ProfileSummaryInfo *getPSI() const { return PSI; }
502504
BlockFrequencyInfo *getBFI() const { return BFI; }
505+
MachineModuleInfo *getMMI() const { return MMI; }
503506

504507
FlagInserter *getFlagInserter() { return Inserter; }
505508
void setFlagInserter(FlagInserter *FI) { Inserter = FI; }

llvm/include/llvm/CodeGen/SelectionDAGISel.h

+1
Original file line numberDiff line numberDiff line change
@@ -48,6 +48,7 @@ class SelectionDAGISel {
4848
std::unique_ptr<FunctionLoweringInfo> FuncInfo;
4949
SwiftErrorValueTracking *SwiftError;
5050
MachineFunction *MF;
51+
MachineModuleInfo *MMI;
5152
MachineRegisterInfo *RegInfo;
5253
SelectionDAG *CurDAG;
5354
std::unique_ptr<SelectionDAGBuilder> SDB;

llvm/include/llvm/Passes/MachinePassRegistry.def

+1
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@
1717
#define MODULE_ANALYSIS(NAME, CREATE_PASS)
1818
#endif
1919
MODULE_ANALYSIS("collector-metadata", CollectorMetadataAnalysis())
20+
MODULE_ANALYSIS("machine-module-info", MachineModuleAnalysis())
2021
MODULE_ANALYSIS("pass-instrumentation", PassInstrumentationAnalysis(PIC))
2122
#undef MODULE_ANALYSIS
2223

llvm/lib/CodeGen/SelectionDAG/SelectionDAG.cpp

+2-1
Original file line numberDiff line numberDiff line change
@@ -1333,7 +1333,7 @@ void SelectionDAG::init(MachineFunction &NewMF,
13331333
OptimizationRemarkEmitter &NewORE, Pass *PassPtr,
13341334
const TargetLibraryInfo *LibraryInfo,
13351335
UniformityInfo *NewUA, ProfileSummaryInfo *PSIin,
1336-
BlockFrequencyInfo *BFIin,
1336+
BlockFrequencyInfo *BFIin, MachineModuleInfo &MMIin,
13371337
FunctionVarLocs const *VarLocs) {
13381338
MF = &NewMF;
13391339
SDAGISelPass = PassPtr;
@@ -1345,6 +1345,7 @@ void SelectionDAG::init(MachineFunction &NewMF,
13451345
UA = NewUA;
13461346
PSI = PSIin;
13471347
BFI = BFIin;
1348+
MMI = &MMIin;
13481349
FnVarLocs = VarLocs;
13491350
}
13501351

llvm/lib/CodeGen/SelectionDAG/SelectionDAGBuilder.cpp

+3-3
Original file line numberDiff line numberDiff line change
@@ -6707,11 +6707,11 @@ void SelectionDAGBuilder::visitIntrinsicCall(const CallInst &I,
67076707
getValue(I.getArgOperand(0))));
67086708
return;
67096709
case Intrinsic::eh_sjlj_callsite: {
6710-
MachineModuleInfo &MMI = DAG.getMachineFunction().getMMI();
67116710
ConstantInt *CI = cast<ConstantInt>(I.getArgOperand(0));
6712-
assert(MMI.getCurrentCallSite() == 0 && "Overlapping call sites!");
6711+
assert(DAG.getMMI()->getCurrentCallSite() == 0 &&
6712+
"Overlapping call sites!");
67136713

6714-
MMI.setCurrentCallSite(CI->getZExtValue());
6714+
DAG.getMMI()->setCurrentCallSite(CI->getZExtValue());
67156715
return;
67166716
}
67176717
case Intrinsic::eh_sjlj_functioncontext: {

llvm/lib/CodeGen/SelectionDAG/SelectionDAGISel.cpp

+12-6
Original file line numberDiff line numberDiff line change
@@ -509,7 +509,10 @@ void SelectionDAGISel::initializeAnalysisResults(
509509
FnVarLocs = &FAM.getResult<DebugAssignmentTrackingAnalysis>(Fn);
510510

511511
auto *UA = FAM.getCachedResult<UniformityInfoAnalysis>(Fn);
512-
CurDAG->init(*MF, *ORE, MFAM, LibInfo, UA, PSI, BFI, FnVarLocs);
512+
MachineModuleInfo &MMI =
513+
MAMP.getCachedResult<MachineModuleAnalysis>(*Fn.getParent())->getMMI();
514+
515+
CurDAG->init(*MF, *ORE, MFAM, LibInfo, UA, PSI, BFI, MMI, FnVarLocs);
513516

514517
// Now get the optional analyzes if we want to.
515518
// This is based on the possibly changed OptLevel (after optnone is taken
@@ -562,7 +565,11 @@ void SelectionDAGISel::initializeAnalysisResults(MachineFunctionPass &MFP) {
562565
UniformityInfo *UA = nullptr;
563566
if (auto *UAPass = MFP.getAnalysisIfAvailable<UniformityInfoWrapperPass>())
564567
UA = &UAPass->getUniformityInfo();
565-
CurDAG->init(*MF, *ORE, &MFP, LibInfo, UA, PSI, BFI, FnVarLocs);
568+
569+
MachineModuleInfo &MMI =
570+
MFP.getAnalysis<MachineModuleInfoWrapperPass>().getMMI();
571+
572+
CurDAG->init(*MF, *ORE, &MFP, LibInfo, UA, PSI, BFI, MMI, FnVarLocs);
566573

567574
// Now get the optional analyzes if we want to.
568575
// This is based on the possibly changed OptLevel (after optnone is taken
@@ -796,7 +803,7 @@ bool SelectionDAGISel::runOnMachineFunction(MachineFunction &mf) {
796803
}
797804

798805
// Determine if floating point is used for msvc
799-
computeUsesMSVCFloatingPoint(TM.getTargetTriple(), Fn, MF->getMMI());
806+
computeUsesMSVCFloatingPoint(TM.getTargetTriple(), Fn, *CurDAG->getMMI());
800807

801808
// Release function-specific state. SDB and CurDAG are already cleared
802809
// at this point.
@@ -1443,7 +1450,6 @@ bool SelectionDAGISel::PrepareEHLandingPad() {
14431450

14441451
// Mark and Report IPToState for each Block under IsEHa
14451452
void SelectionDAGISel::reportIPToStateForBlocks(MachineFunction *MF) {
1446-
MachineModuleInfo &MMI = MF->getMMI();
14471453
llvm::WinEHFuncInfo *EHInfo = MF->getWinEHFuncInfo();
14481454
if (!EHInfo)
14491455
return;
@@ -1458,8 +1464,8 @@ void SelectionDAGISel::reportIPToStateForBlocks(MachineFunction *MF) {
14581464
continue;
14591465

14601466
// Insert EH Labels
1461-
MCSymbol *BeginLabel = MMI.getContext().createTempSymbol();
1462-
MCSymbol *EndLabel = MMI.getContext().createTempSymbol();
1467+
MCSymbol *BeginLabel = MF->getContext().createTempSymbol();
1468+
MCSymbol *EndLabel = MF->getContext().createTempSymbol();
14631469
EHInfo->addIPToStateRange(State, BeginLabel, EndLabel);
14641470
BuildMI(MBB, MBBb, SDB->getCurDebugLoc(),
14651471
TII->get(TargetOpcode::EH_LABEL))

llvm/unittests/CodeGen/AArch64SelectionDAGTest.cpp

+2-1
Original file line numberDiff line numberDiff line change
@@ -68,7 +68,8 @@ class AArch64SelectionDAGTest : public testing::Test {
6868
if (!DAG)
6969
report_fatal_error("DAG?");
7070
OptimizationRemarkEmitter ORE(F);
71-
DAG->init(*MF, ORE, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr);
71+
DAG->init(*MF, ORE, nullptr, nullptr, nullptr, nullptr, nullptr, MMI,
72+
nullptr);
7273
}
7374

7475
TargetLoweringBase::LegalizeTypeAction getTypeAction(EVT VT) {

llvm/unittests/CodeGen/SelectionDAGAddressAnalysisTest.cpp

+2-1
Original file line numberDiff line numberDiff line change
@@ -78,7 +78,8 @@ class SelectionDAGAddressAnalysisTest : public testing::Test {
7878
if (!DAG)
7979
report_fatal_error("DAG?");
8080
OptimizationRemarkEmitter ORE(F);
81-
DAG->init(*MF, ORE, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr);
81+
DAG->init(*MF, ORE, nullptr, nullptr, nullptr, nullptr, nullptr, MMI,
82+
nullptr);
8283
}
8384

8485
TargetLoweringBase::LegalizeTypeAction getTypeAction(EVT VT) {

llvm/unittests/CodeGen/SelectionDAGPatternMatchTest.cpp

+2-1
Original file line numberDiff line numberDiff line change
@@ -77,7 +77,8 @@ class SelectionDAGPatternMatchTest : public testing::Test {
7777
if (!DAG)
7878
report_fatal_error("DAG?");
7979
OptimizationRemarkEmitter ORE(F);
80-
DAG->init(*MF, ORE, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr);
80+
DAG->init(*MF, ORE, nullptr, nullptr, nullptr, nullptr, nullptr, MMI,
81+
nullptr);
8182
}
8283

8384
TargetLoweringBase::LegalizeTypeAction getTypeAction(EVT VT) {

0 commit comments

Comments
 (0)