Lines Matching refs:MF
95 bool runOnMachineFunction(MachineFunction &MF) override;
122 void calculateCallFrameInfo(MachineFunction &MF);
123 void calculateSaveRestoreBlocks(MachineFunction &MF);
124 void spillCalleeSavedRegs(MachineFunction &MF);
126 void calculateFrameObjectOffsets(MachineFunction &MF);
127 void replaceFrameIndices(MachineFunction &MF);
128 void replaceFrameIndices(MachineBasicBlock *BB, MachineFunction &MF,
133 bool replaceFrameIndexDebugInstr(MachineFunction &MF, MachineInstr &MI,
137 void replaceFrameIndicesBackward(MachineFunction &MF);
138 void replaceFrameIndicesBackward(MachineBasicBlock *BB, MachineFunction &MF,
141 void insertPrologEpilogCode(MachineFunction &MF);
142 void insertZeroCallUsedRegs(MachineFunction &MF);
221 bool PEI::runOnMachineFunction(MachineFunction &MF) { in runOnMachineFunction() argument
223 const Function &F = MF.getFunction(); in runOnMachineFunction()
224 const TargetRegisterInfo *TRI = MF.getSubtarget().getRegisterInfo(); in runOnMachineFunction()
225 const TargetFrameLowering *TFI = MF.getSubtarget().getFrameLowering(); in runOnMachineFunction()
227 RS = TRI->requiresRegisterScavenging(MF) ? new RegScavenger() : nullptr; in runOnMachineFunction()
228 FrameIndexVirtualScavenging = TRI->requiresFrameIndexScavenging(MF); in runOnMachineFunction()
234 calculateCallFrameInfo(MF); in runOnMachineFunction()
238 calculateSaveRestoreBlocks(MF); in runOnMachineFunction()
246 if (MF.getTarget().usesPhysRegsForValues()) in runOnMachineFunction()
247 spillCalleeSavedRegs(MF); in runOnMachineFunction()
251 TFI->processFunctionBeforeFrameFinalized(MF, RS); in runOnMachineFunction()
254 calculateFrameObjectOffsets(MF); in runOnMachineFunction()
262 insertPrologEpilogCode(MF); in runOnMachineFunction()
270 TFI->processFunctionBeforeFrameIndicesReplaced(MF, RS); in runOnMachineFunction()
274 if (TFI->needsFrameIndexResolution(MF)) { in runOnMachineFunction()
278 TRI->requiresFrameIndexReplacementScavenging(MF); in runOnMachineFunction()
281 replaceFrameIndicesBackward(MF); in runOnMachineFunction()
283 replaceFrameIndices(MF); in runOnMachineFunction()
289 if (TRI->requiresRegisterScavenging(MF) && FrameIndexVirtualScavenging) in runOnMachineFunction()
290 scavengeFrameVirtualRegs(MF, *RS); in runOnMachineFunction()
293 MachineFrameInfo &MFI = MF.getFrameInfo(); in runOnMachineFunction()
297 if (MF.getFunction().hasFnAttribute("warn-stack-size")) { in runOnMachineFunction()
298 bool Failed = MF.getFunction() in runOnMachineFunction()
307 if (MF.getFunction().hasFnAttribute(Attribute::SafeStack)) in runOnMachineFunction()
338 MF.getFunction().getSubprogram(), in runOnMachineFunction()
339 &MF.front()) in runOnMachineFunction()
342 << ore::NV("Function", MF.getFunction().getName()) << "'"; in runOnMachineFunction()
356 void PEI::calculateCallFrameInfo(MachineFunction &MF) { in calculateCallFrameInfo() argument
357 const TargetInstrInfo &TII = *MF.getSubtarget().getInstrInfo(); in calculateCallFrameInfo()
358 const TargetFrameLowering *TFI = MF.getSubtarget().getFrameLowering(); in calculateCallFrameInfo()
359 MachineFrameInfo &MFI = MF.getFrameInfo(); in calculateCallFrameInfo()
374 for (MachineBasicBlock &BB : MF) in calculateCallFrameInfo()
394 if (TFI->canSimplifyCallFramePseudos(MF)) { in calculateCallFrameInfo()
400 TFI->eliminateCallFramePseudoInstr(MF, *I->getParent(), I); in calculateCallFrameInfo()
404 for (MachineBasicBlock &MBB : MF) in calculateCallFrameInfo()
411 void PEI::calculateSaveRestoreBlocks(MachineFunction &MF) { in calculateSaveRestoreBlocks() argument
412 const MachineFrameInfo &MFI = MF.getFrameInfo(); in calculateSaveRestoreBlocks()
432 SaveBlocks.push_back(&MF.front()); in calculateSaveRestoreBlocks()
433 for (MachineBasicBlock &MBB : MF) { in calculateSaveRestoreBlocks()
536 static void updateLiveness(MachineFunction &MF) { in updateLiveness() argument
537 MachineFrameInfo &MFI = MF.getFrameInfo(); in updateLiveness()
547 MachineBasicBlock *Entry = &MF.front(); in updateLiveness()
581 MachineRegisterInfo &MRI = MF.getRegInfo(); in updateLiveness()
596 for (MachineBasicBlock &MBB : MF) { in updateLiveness()
610 MachineFunction &MF = *SaveBlock.getParent(); in insertCSRSaves() local
611 const TargetInstrInfo &TII = *MF.getSubtarget().getInstrInfo(); in insertCSRSaves()
612 const TargetFrameLowering *TFI = MF.getSubtarget().getFrameLowering(); in insertCSRSaves()
613 const TargetRegisterInfo *TRI = MF.getSubtarget().getRegisterInfo(); in insertCSRSaves()
637 MachineFunction &MF = *RestoreBlock.getParent(); in insertCSRRestores() local
638 const TargetInstrInfo &TII = *MF.getSubtarget().getInstrInfo(); in insertCSRRestores()
639 const TargetFrameLowering *TFI = MF.getSubtarget().getFrameLowering(); in insertCSRRestores()
640 const TargetRegisterInfo *TRI = MF.getSubtarget().getRegisterInfo(); in insertCSRRestores()
665 void PEI::spillCalleeSavedRegs(MachineFunction &MF) { in spillCalleeSavedRegs() argument
671 assert(MF.getProperties().hasProperty( in spillCalleeSavedRegs()
674 const Function &F = MF.getFunction(); in spillCalleeSavedRegs()
675 const TargetFrameLowering *TFI = MF.getSubtarget().getFrameLowering(); in spillCalleeSavedRegs()
676 MachineFrameInfo &MFI = MF.getFrameInfo(); in spillCalleeSavedRegs()
682 TFI->determineCalleeSaves(MF, SavedRegs, RS); in spillCalleeSavedRegs()
685 assignCalleeSavedSpillSlots(MF, SavedRegs, MinCSFrameIndex, MaxCSFrameIndex); in spillCalleeSavedRegs()
700 updateLiveness(MF); in spillCalleeSavedRegs()
857 void PEI::calculateFrameObjectOffsets(MachineFunction &MF) { in calculateFrameObjectOffsets() argument
858 const TargetFrameLowering &TFI = *MF.getSubtarget().getFrameLowering(); in calculateFrameObjectOffsets()
864 MachineFrameInfo &MFI = MF.getFrameInfo(); in calculateFrameObjectOffsets()
938 const TargetRegisterInfo *RegInfo = MF.getSubtarget().getRegisterInfo(); in calculateFrameObjectOffsets()
939 bool EarlyScavengingSlots = TFI.allocateScavengingFrameIndexesNearIncomingSP(MF); in calculateFrameObjectOffsets()
975 if (const WinEHFuncInfo *FuncInfo = MF.getWinEHFuncInfo()) in calculateFrameObjectOffsets()
1088 if (MF.getTarget().getOptLevel() != CodeGenOptLevel::None && in calculateFrameObjectOffsets()
1089 MF.getTarget().Options.StackSymbolOrdering) in calculateFrameObjectOffsets()
1090 TFI.orderFrameObjects(MF, ObjectsToAllocate); in calculateFrameObjectOffsets()
1098 MF.getTarget().getOptLevel() != CodeGenOptLevel::None && in calculateFrameObjectOffsets()
1099 MFI.getStackProtectorIndex() < 0 && TFI.enableStackSlotScavenging(MF)) in calculateFrameObjectOffsets()
1122 if (MFI.adjustsStack() && TFI.hasReservedCallFrame(MF)) in calculateFrameObjectOffsets()
1132 (RegInfo->hasStackRealignment(MF) && MFI.getObjectIndexEnd() != 0)) in calculateFrameObjectOffsets()
1172 void PEI::insertPrologEpilogCode(MachineFunction &MF) { in insertPrologEpilogCode() argument
1173 const TargetFrameLowering &TFI = *MF.getSubtarget().getFrameLowering(); in insertPrologEpilogCode()
1177 TFI.emitPrologue(MF, *SaveBlock); in insertPrologEpilogCode()
1181 TFI.emitEpilogue(MF, *RestoreBlock); in insertPrologEpilogCode()
1184 insertZeroCallUsedRegs(MF); in insertPrologEpilogCode()
1187 TFI.inlineStackProbe(MF, *SaveBlock); in insertPrologEpilogCode()
1193 if (MF.shouldSplitStack()) { in insertPrologEpilogCode()
1195 TFI.adjustForSegmentedStacks(MF, *SaveBlock); in insertPrologEpilogCode()
1203 if (MF.getFunction().getCallingConv() == CallingConv::HiPE) in insertPrologEpilogCode()
1205 TFI.adjustForHiPEPrologue(MF, *SaveBlock); in insertPrologEpilogCode()
1209 void PEI::insertZeroCallUsedRegs(MachineFunction &MF) { in insertZeroCallUsedRegs() argument
1210 const Function &F = MF.getFunction(); in insertZeroCallUsedRegs()
1237 const TargetRegisterInfo &TRI = *MF.getSubtarget().getRegisterInfo(); in insertZeroCallUsedRegs()
1238 const BitVector AllocatableSet(TRI.getAllocatableSet(MF)); in insertZeroCallUsedRegs()
1243 for (const MachineBasicBlock &MBB : MF) in insertZeroCallUsedRegs()
1262 for (const MachineBasicBlock::RegisterMaskPair &LI : MF.front().liveins()) in insertZeroCallUsedRegs()
1268 if (TRI.isFixedRegister(MF, Reg)) in insertZeroCallUsedRegs()
1272 if (OnlyGPR && !TRI.isGeneralPurposeRegister(MF, Reg)) in insertZeroCallUsedRegs()
1284 } else if (!TRI.isArgumentRegister(MF, Reg)) { in insertZeroCallUsedRegs()
1293 for (const MachineBasicBlock &MBB : MF) in insertZeroCallUsedRegs()
1317 for (const MachineBasicBlock &MBB : MF) { in insertZeroCallUsedRegs()
1339 for (const MCPhysReg *CSRegs = TRI.getCalleeSavedRegs(&MF); in insertZeroCallUsedRegs()
1344 const TargetFrameLowering &TFI = *MF.getSubtarget().getFrameLowering(); in insertZeroCallUsedRegs()
1345 for (MachineBasicBlock &MBB : MF) in insertZeroCallUsedRegs()
1352 void PEI::replaceFrameIndicesBackward(MachineFunction &MF) { in replaceFrameIndicesBackward() argument
1353 const TargetFrameLowering &TFI = *MF.getSubtarget().getFrameLowering(); in replaceFrameIndicesBackward()
1355 for (auto &MBB : MF) { in replaceFrameIndicesBackward()
1370 replaceFrameIndicesBackward(&MBB, MF, SPAdj); in replaceFrameIndicesBackward()
1380 void PEI::replaceFrameIndices(MachineFunction &MF) { in replaceFrameIndices() argument
1381 const TargetFrameLowering &TFI = *MF.getSubtarget().getFrameLowering(); in replaceFrameIndices()
1383 for (auto &MBB : MF) { in replaceFrameIndices()
1388 replaceFrameIndices(&MBB, MF, SPAdj); in replaceFrameIndices()
1396 bool PEI::replaceFrameIndexDebugInstr(MachineFunction &MF, MachineInstr &MI, in replaceFrameIndexDebugInstr() argument
1398 const TargetFrameLowering *TFI = MF.getSubtarget().getFrameLowering(); in replaceFrameIndexDebugInstr()
1399 const TargetRegisterInfo &TRI = *MF.getSubtarget().getRegisterInfo(); in replaceFrameIndexDebugInstr()
1408 unsigned Size = MF.getFrameInfo().getObjectSize(FrameIdx); in replaceFrameIndexDebugInstr()
1410 StackOffset Offset = TFI->getFrameIndexReference(MF, FrameIdx, Reg); in replaceFrameIndexDebugInstr()
1468 MF, MI.getOperand(OpIdx).getIndex(), Reg, /*IgnoreSPUpdates*/ false); in replaceFrameIndexDebugInstr()
1479 MachineFunction &MF, int &SPAdj) { in replaceFrameIndicesBackward() argument
1480 assert(MF.getSubtarget().getRegisterInfo() && in replaceFrameIndicesBackward()
1483 const TargetInstrInfo &TII = *MF.getSubtarget().getInstrInfo(); in replaceFrameIndicesBackward()
1484 const TargetRegisterInfo &TRI = *MF.getSubtarget().getRegisterInfo(); in replaceFrameIndicesBackward()
1485 const TargetFrameLowering &TFI = *MF.getSubtarget().getFrameLowering(); in replaceFrameIndicesBackward()
1496 TFI.eliminateCallFramePseudoInstr(MF, *BB, &MI); in replaceFrameIndicesBackward()
1509 if (replaceFrameIndexDebugInstr(MF, MI, Idx, SPAdj)) in replaceFrameIndicesBackward()
1523 void PEI::replaceFrameIndices(MachineBasicBlock *BB, MachineFunction &MF, in replaceFrameIndices() argument
1525 assert(MF.getSubtarget().getRegisterInfo() && in replaceFrameIndices()
1527 const TargetInstrInfo &TII = *MF.getSubtarget().getInstrInfo(); in replaceFrameIndices()
1528 const TargetRegisterInfo &TRI = *MF.getSubtarget().getRegisterInfo(); in replaceFrameIndices()
1529 const TargetFrameLowering *TFI = MF.getSubtarget().getFrameLowering(); in replaceFrameIndices()
1537 I = TFI->eliminateCallFramePseudoInstr(MF, *BB, I); in replaceFrameIndices()
1548 if (replaceFrameIndexDebugInstr(MF, MI, i, SPAdj)) in replaceFrameIndices()