Lines Matching refs:MF

97   bool runOnMachineFunction(MachineFunction &MF) override;
124 void calculateCallFrameInfo(MachineFunction &MF);
125 void calculateSaveRestoreBlocks(MachineFunction &MF);
126 void spillCalleeSavedRegs(MachineFunction &MF);
128 void calculateFrameObjectOffsets(MachineFunction &MF);
129 void replaceFrameIndices(MachineFunction &MF);
130 void replaceFrameIndices(MachineBasicBlock *BB, MachineFunction &MF,
132 void insertPrologEpilogCode(MachineFunction &MF);
211 bool PEI::runOnMachineFunction(MachineFunction &MF) { in runOnMachineFunction() argument
213 const Function &F = MF.getFunction(); in runOnMachineFunction()
214 const TargetRegisterInfo *TRI = MF.getSubtarget().getRegisterInfo(); in runOnMachineFunction()
215 const TargetFrameLowering *TFI = MF.getSubtarget().getFrameLowering(); in runOnMachineFunction()
217 RS = TRI->requiresRegisterScavenging(MF) ? new RegScavenger() : nullptr; in runOnMachineFunction()
218 FrameIndexVirtualScavenging = TRI->requiresFrameIndexScavenging(MF); in runOnMachineFunction()
224 calculateCallFrameInfo(MF); in runOnMachineFunction()
228 calculateSaveRestoreBlocks(MF); in runOnMachineFunction()
236 if (MF.getTarget().usesPhysRegsForValues()) in runOnMachineFunction()
237 spillCalleeSavedRegs(MF); in runOnMachineFunction()
241 TFI->processFunctionBeforeFrameFinalized(MF, RS); in runOnMachineFunction()
244 calculateFrameObjectOffsets(MF); in runOnMachineFunction()
252 insertPrologEpilogCode(MF); in runOnMachineFunction()
260 TFI->processFunctionBeforeFrameIndicesReplaced(MF, RS); in runOnMachineFunction()
265 replaceFrameIndices(MF); in runOnMachineFunction()
270 if (TRI->requiresRegisterScavenging(MF) && FrameIndexVirtualScavenging) in runOnMachineFunction()
271 scavengeFrameVirtualRegs(MF, *RS); in runOnMachineFunction()
274 MachineFrameInfo &MFI = MF.getFrameInfo(); in runOnMachineFunction()
278 if (MF.getFunction().hasFnAttribute("warn-stack-size")) { in runOnMachineFunction()
279 bool Failed = MF.getFunction() in runOnMachineFunction()
293 MF.getFunction().getSubprogram(), in runOnMachineFunction()
294 &MF.front()) in runOnMachineFunction()
309 void PEI::calculateCallFrameInfo(MachineFunction &MF) { in calculateCallFrameInfo() argument
310 const TargetInstrInfo &TII = *MF.getSubtarget().getInstrInfo(); in calculateCallFrameInfo()
311 const TargetFrameLowering *TFI = MF.getSubtarget().getFrameLowering(); in calculateCallFrameInfo()
312 MachineFrameInfo &MFI = MF.getFrameInfo(); in calculateCallFrameInfo()
327 for (MachineBasicBlock &BB : MF) in calculateCallFrameInfo()
352 if (TFI->canSimplifyCallFramePseudos(MF)) in calculateCallFrameInfo()
353 TFI->eliminateCallFramePseudoInstr(MF, *I->getParent(), I); in calculateCallFrameInfo()
359 void PEI::calculateSaveRestoreBlocks(MachineFunction &MF) { in calculateSaveRestoreBlocks() argument
360 const MachineFrameInfo &MFI = MF.getFrameInfo(); in calculateSaveRestoreBlocks()
380 SaveBlocks.push_back(&MF.front()); in calculateSaveRestoreBlocks()
381 for (MachineBasicBlock &MBB : MF) { in calculateSaveRestoreBlocks()
468 static void updateLiveness(MachineFunction &MF) { in updateLiveness() argument
469 MachineFrameInfo &MFI = MF.getFrameInfo(); in updateLiveness()
479 MachineBasicBlock *Entry = &MF.front(); in updateLiveness()
513 MachineRegisterInfo &MRI = MF.getRegInfo(); in updateLiveness()
528 for (MachineBasicBlock &MBB : MF) { in updateLiveness()
543 MachineFunction &MF = *SaveBlock.getParent(); in insertCSRSaves() local
544 const TargetInstrInfo &TII = *MF.getSubtarget().getInstrInfo(); in insertCSRSaves()
545 const TargetFrameLowering *TFI = MF.getSubtarget().getFrameLowering(); in insertCSRSaves()
546 const TargetRegisterInfo *TRI = MF.getSubtarget().getRegisterInfo(); in insertCSRSaves()
570 MachineFunction &MF = *RestoreBlock.getParent(); in insertCSRRestores() local
571 const TargetInstrInfo &TII = *MF.getSubtarget().getInstrInfo(); in insertCSRRestores()
572 const TargetFrameLowering *TFI = MF.getSubtarget().getFrameLowering(); in insertCSRRestores()
573 const TargetRegisterInfo *TRI = MF.getSubtarget().getRegisterInfo(); in insertCSRRestores()
597 void PEI::spillCalleeSavedRegs(MachineFunction &MF) { in spillCalleeSavedRegs() argument
603 assert(MF.getProperties().hasProperty( in spillCalleeSavedRegs()
606 const Function &F = MF.getFunction(); in spillCalleeSavedRegs()
607 const TargetFrameLowering *TFI = MF.getSubtarget().getFrameLowering(); in spillCalleeSavedRegs()
608 MachineFrameInfo &MFI = MF.getFrameInfo(); in spillCalleeSavedRegs()
614 TFI->determineCalleeSaves(MF, SavedRegs, RS); in spillCalleeSavedRegs()
617 assignCalleeSavedSpillSlots(MF, SavedRegs, MinCSFrameIndex, MaxCSFrameIndex); in spillCalleeSavedRegs()
632 updateLiveness(MF); in spillCalleeSavedRegs()
790 void PEI::calculateFrameObjectOffsets(MachineFunction &MF) { in calculateFrameObjectOffsets() argument
791 const TargetFrameLowering &TFI = *MF.getSubtarget().getFrameLowering(); in calculateFrameObjectOffsets()
797 MachineFrameInfo &MFI = MF.getFrameInfo(); in calculateFrameObjectOffsets()
810 unsigned Skew = TFI.getStackAlignmentSkew(MF); in calculateFrameObjectOffsets()
888 const TargetRegisterInfo *RegInfo = MF.getSubtarget().getRegisterInfo(); in calculateFrameObjectOffsets()
889 bool EarlyScavengingSlots = (TFI.hasFP(MF) && TFI.isFPCloseToIncomingSP() && in calculateFrameObjectOffsets()
890 RegInfo->useFPForScavengingIndex(MF) && in calculateFrameObjectOffsets()
891 !RegInfo->hasStackRealignment(MF)); in calculateFrameObjectOffsets()
927 if (const WinEHFuncInfo *FuncInfo = MF.getWinEHFuncInfo()) in calculateFrameObjectOffsets()
1030 if (MF.getTarget().getOptLevel() != CodeGenOpt::None && in calculateFrameObjectOffsets()
1031 MF.getTarget().Options.StackSymbolOrdering) in calculateFrameObjectOffsets()
1032 TFI.orderFrameObjects(MF, ObjectsToAllocate); in calculateFrameObjectOffsets()
1040 MF.getTarget().getOptLevel() != CodeGenOpt::None && in calculateFrameObjectOffsets()
1041 MFI.getStackProtectorIndex() < 0 && TFI.enableStackSlotScavenging(MF)) in calculateFrameObjectOffsets()
1064 if (MFI.adjustsStack() && TFI.hasReservedCallFrame(MF)) in calculateFrameObjectOffsets()
1074 (RegInfo->hasStackRealignment(MF) && MFI.getObjectIndexEnd() != 0)) in calculateFrameObjectOffsets()
1114 void PEI::insertPrologEpilogCode(MachineFunction &MF) { in insertPrologEpilogCode() argument
1115 const TargetFrameLowering &TFI = *MF.getSubtarget().getFrameLowering(); in insertPrologEpilogCode()
1119 TFI.emitPrologue(MF, *SaveBlock); in insertPrologEpilogCode()
1123 TFI.emitEpilogue(MF, *RestoreBlock); in insertPrologEpilogCode()
1126 TFI.inlineStackProbe(MF, *SaveBlock); in insertPrologEpilogCode()
1132 if (MF.shouldSplitStack()) { in insertPrologEpilogCode()
1134 TFI.adjustForSegmentedStacks(MF, *SaveBlock); in insertPrologEpilogCode()
1137 MF.getMMI().setHasSplitStack(true); in insertPrologEpilogCode()
1139 MF.getMMI().setHasNosplitStack(true); in insertPrologEpilogCode()
1146 if (MF.getFunction().getCallingConv() == CallingConv::HiPE) in insertPrologEpilogCode()
1148 TFI.adjustForHiPEPrologue(MF, *SaveBlock); in insertPrologEpilogCode()
1153 void PEI::replaceFrameIndices(MachineFunction &MF) { in replaceFrameIndices() argument
1154 const auto &ST = MF.getSubtarget(); in replaceFrameIndices()
1156 if (!TFI.needsFrameIndexResolution(MF)) in replaceFrameIndices()
1163 TRI->requiresFrameIndexReplacementScavenging(MF); in replaceFrameIndices()
1167 SPState.resize(MF.getNumBlockIDs()); in replaceFrameIndices()
1171 for (auto DFI = df_ext_begin(&MF, Reachable), DFE = df_ext_end(&MF, Reachable); in replaceFrameIndices()
1182 replaceFrameIndices(BB, MF, SPAdj); in replaceFrameIndices()
1187 for (auto &BB : MF) { in replaceFrameIndices()
1192 replaceFrameIndices(&BB, MF, SPAdj); in replaceFrameIndices()
1196 void PEI::replaceFrameIndices(MachineBasicBlock *BB, MachineFunction &MF, in replaceFrameIndices() argument
1198 assert(MF.getSubtarget().getRegisterInfo() && in replaceFrameIndices()
1200 const TargetInstrInfo &TII = *MF.getSubtarget().getInstrInfo(); in replaceFrameIndices()
1201 const TargetRegisterInfo &TRI = *MF.getSubtarget().getRegisterInfo(); in replaceFrameIndices()
1202 const TargetFrameLowering *TFI = MF.getSubtarget().getFrameLowering(); in replaceFrameIndices()
1213 I = TFI->eliminateCallFramePseudoInstr(MF, *BB, I); in replaceFrameIndices()
1235 unsigned Size = MF.getFrameInfo().getObjectSize(FrameIdx); in replaceFrameIndices()
1238 TFI->getFrameIndexReference(MF, FrameIdx, Reg); in replaceFrameIndices()
1295 MF, MI.getOperand(i).getIndex(), Reg, /*IgnoreSPUpdates*/ false); in replaceFrameIndices()