• Home
  • Raw
  • Download

Lines Matching refs:MF

52 bool X86FrameLowering::hasReservedCallFrame(const MachineFunction &MF) const {  in hasReservedCallFrame()
53 return !MF.getFrameInfo()->hasVarSizedObjects() && in hasReservedCallFrame()
54 !MF.getInfo<X86MachineFunctionInfo>()->getHasPushSequences(); in hasReservedCallFrame()
62 X86FrameLowering::canSimplifyCallFramePseudos(const MachineFunction &MF) const { in canSimplifyCallFramePseudos()
63 return hasReservedCallFrame(MF) || in canSimplifyCallFramePseudos()
64 (hasFP(MF) && !TRI->needsStackRealignment(MF)) || in canSimplifyCallFramePseudos()
65 TRI->hasBasePointer(MF); in canSimplifyCallFramePseudos()
76 X86FrameLowering::needsFrameIndexResolution(const MachineFunction &MF) const { in needsFrameIndexResolution()
77 return MF.getFrameInfo()->hasStackObjects() || in needsFrameIndexResolution()
78 MF.getInfo<X86MachineFunctionInfo>()->getHasPushSequences(); in needsFrameIndexResolution()
84 bool X86FrameLowering::hasFP(const MachineFunction &MF) const { in hasFP()
85 const MachineFrameInfo *MFI = MF.getFrameInfo(); in hasFP()
86 const MachineModuleInfo &MMI = MF.getMMI(); in hasFP()
88 return (MF.getTarget().Options.DisableFramePointerElim(MF) || in hasFP()
89 TRI->needsStackRealignment(MF) || in hasFP()
92 MF.getInfo<X86MachineFunctionInfo>()->getForceFramePointer() || in hasFP()
151 const MachineFunction *MF = MBB.getParent(); in findDeadCallerSavedReg() local
152 const Function *F = MF->getFunction(); in findDeadCallerSavedReg()
153 if (!F || MF->getMMI().callsEHReturn()) in findDeadCallerSavedReg()
156 const TargetRegisterClass &AvailableRegs = *TRI->getGPRsForTailCall(*MF); in findDeadCallerSavedReg()
194 static bool isEAXLiveIn(MachineFunction &MF) { in isEAXLiveIn() argument
195 for (MachineRegisterInfo::livein_iterator II = MF.getRegInfo().livein_begin(), in isEAXLiveIn()
196 EE = MF.getRegInfo().livein_end(); II != EE; ++II) { in isEAXLiveIn()
398 MachineFunction &MF = *MBB.getParent(); in BuildCFI() local
399 unsigned CFIIndex = MF.getMMI().addFrameInst(CFIInst); in BuildCFI()
408 MachineFunction &MF = *MBB.getParent(); in emitCalleeSavedFrameMoves() local
409 MachineFrameInfo *MFI = MF.getFrameInfo(); in emitCalleeSavedFrameMoves()
410 MachineModuleInfo &MMI = MF.getMMI(); in emitCalleeSavedFrameMoves()
434 static bool usesTheStack(const MachineFunction &MF) { in usesTheStack() argument
435 const MachineRegisterInfo &MRI = MF.getRegInfo(); in usesTheStack()
446 MachineInstr *X86FrameLowering::emitStackProbe(MachineFunction &MF, in emitStackProbe() argument
451 const X86Subtarget &STI = MF.getSubtarget<X86Subtarget>(); in emitStackProbe()
454 return emitStackProbeInlineStub(MF, MBB, MBBI, DL, true); in emitStackProbe()
456 return emitStackProbeInline(MF, MBB, MBBI, DL, false); in emitStackProbe()
459 return emitStackProbeCall(MF, MBB, MBBI, DL, InProlog); in emitStackProbe()
463 void X86FrameLowering::inlineStackProbe(MachineFunction &MF, in inlineStackProbe() argument
481 emitStackProbeInline(MF, PrologMBB, MBBI, DL, true); in inlineStackProbe()
487 MachineFunction &MF, MachineBasicBlock &MBB, in emitStackProbeInline() argument
489 const X86Subtarget &STI = MF.getSubtarget<X86Subtarget>(); in emitStackProbeInline()
523 MachineBasicBlock *RoundMBB = MF.CreateMachineBasicBlock(LLVM_BB); in emitStackProbeInline()
524 MachineBasicBlock *LoopMBB = MF.CreateMachineBasicBlock(LLVM_BB); in emitStackProbeInline()
525 MachineBasicBlock *ContinueMBB = MF.CreateMachineBasicBlock(LLVM_BB); in emitStackProbeInline()
528 MF.insert(MBBIter, RoundMBB); in emitStackProbeInline()
529 MF.insert(MBBIter, LoopMBB); in emitStackProbeInline()
530 MF.insert(MBBIter, ContinueMBB); in emitStackProbeInline()
544 MachineRegisterInfo &MRI = MF.getRegInfo(); in emitStackProbeInline()
575 X86MachineFunctionInfo *X86FI = MF.getInfo<X86MachineFunctionInfo>(); in emitStackProbeInline()
577 const bool HasFP = hasFP(MF); in emitStackProbeInline()
703 MachineFunction &MF, MachineBasicBlock &MBB, in emitStackProbeCall() argument
705 bool IsLargeCodeModel = MF.getTarget().getCodeModel() == CodeModel::Large; in emitStackProbeCall()
730 if (Is64Bit && MF.getTarget().getCodeModel() == CodeModel::Large) { in emitStackProbeCall()
767 MachineFunction &MF, MachineBasicBlock &MBB, in emitStackProbeInlineStub() argument
791 uint64_t X86FrameLowering::calculateMaxStackAlign(const MachineFunction &MF) const { in calculateMaxStackAlign()
792 const MachineFrameInfo *MFI = MF.getFrameInfo(); in calculateMaxStackAlign()
795 if (MF.getFunction()->hasFnAttribute("stackrealign")) { in calculateMaxStackAlign()
903 void X86FrameLowering::emitPrologue(MachineFunction &MF, in emitPrologue() argument
905 assert(&STI == &MF.getSubtarget<X86Subtarget>() && in emitPrologue()
908 MachineFrameInfo *MFI = MF.getFrameInfo(); in emitPrologue()
909 const Function *Fn = MF.getFunction(); in emitPrologue()
910 MachineModuleInfo &MMI = MF.getMMI(); in emitPrologue()
911 X86MachineFunctionInfo *X86FI = MF.getInfo<X86MachineFunctionInfo>(); in emitPrologue()
912 uint64_t MaxAlign = calculateMaxStackAlign(MF); // Desired stack alignment. in emitPrologue()
921 bool HasFP = hasFP(MF); in emitPrologue()
923 bool IsWin64Prologue = MF.getTarget().getMCAsmInfo()->usesWindowsCFI(); in emitPrologue()
927 unsigned FramePtr = TRI->getFrameRegister(MF); in emitPrologue()
963 !TRI->needsStackRealignment(MF) && in emitPrologue()
967 !usesTheStack(MF) && // Don't push and pop. in emitPrologue()
968 !MF.shouldSplitStack()) { // Regular stack in emitPrologue()
1029 if (TRI->needsStackRealignment(MF) && !IsWin64Prologue) in emitPrologue()
1085 for (MachineBasicBlock &EveryMBB : MF) in emitPrologue()
1097 NumBytes = getWinEHFuncletFrameSize(MF); in emitPrologue()
1129 if (!IsWin64Prologue && !IsFunclet && TRI->needsStackRealignment(MF)) { in emitPrologue()
1150 if (IsWin64Prologue && !IsFunclet && TRI->needsStackRealignment(MF)) in emitPrologue()
1154 bool isEAXAlive = isEAXLiveIn(MF); in emitPrologue()
1192 emitStackProbe(MF, MBB, MBBI, DL, true); in emitPrologue()
1197 addRegOffset(BuildMI(MF, DL, TII.get(X86::MOV32rm), X86::EAX), in emitPrologue()
1219 unsigned PSPSlotOffset = getPSPSlotOffsetFromSP(MF); in emitPrologue()
1224 .addMemOperand(MF.getMachineMemOperand( in emitPrologue()
1233 MF.getMachineMemOperand(NoInfo, MachineMemOperand::MOStore | in emitPrologue()
1261 MF.getWinEHFuncInfo()->SEHSetFrameOffset = SEHFrameOffset; in emitPrologue()
1271 int FI = MF.getWinEHFuncInfo()->EHRegNodeFrameIndex; in emitPrologue()
1272 int64_t EHRegOffset = getFrameIndexReference(MF, FI, FrameReg); in emitPrologue()
1289 int Offset = getFrameIndexReference(MF, FI, IgnoredFrameReg); in emitPrologue()
1309 unsigned PSPSlotOffset = getPSPSlotOffsetFromSP(MF); in emitPrologue()
1311 MF, MF.getWinEHFuncInfo()->PSPSymFrameIdx); in emitPrologue()
1315 .addMemOperand(MF.getMachineMemOperand( in emitPrologue()
1323 if (IsWin64Prologue && TRI->needsStackRealignment(MF)) { in emitPrologue()
1336 if (TRI->hasBasePointer(MF)) { in emitPrologue()
1360 getFrameIndexReference(MF, X86FI->getSEHFramePtrSaveIndex(), UsedReg); in emitPrologue()
1384 const MachineFunction &MF) const { in canUseLEAForSPInEpilogue()
1391 return !MF.getTarget().getMCAsmInfo()->usesWindowsCFI() || hasFP(MF); in canUseLEAForSPInEpilogue()
1419 X86FrameLowering::getPSPSlotOffsetFromSP(const MachineFunction &MF) const { in getPSPSlotOffsetFromSP()
1420 const WinEHFuncInfo &Info = *MF.getWinEHFuncInfo(); in getPSPSlotOffsetFromSP()
1424 int Offset = getFrameIndexReferenceFromSP(MF, Info.PSPSymFrameIdx, SPReg); in getPSPSlotOffsetFromSP()
1430 X86FrameLowering::getWinEHFuncletFrameSize(const MachineFunction &MF) const { in getWinEHFuncletFrameSize()
1433 MF.getInfo<X86MachineFunctionInfo>()->getCalleeSavedFrameSize(); in getWinEHFuncletFrameSize()
1437 classifyEHPersonality(MF.getFunction()->getPersonalityFn()); in getWinEHFuncletFrameSize()
1442 UsedSize = getPSPSlotOffsetFromSP(MF) + SlotSize; in getWinEHFuncletFrameSize()
1445 UsedSize = MF.getFrameInfo()->getMaxCallFrameSize(); in getWinEHFuncletFrameSize()
1457 void X86FrameLowering::emitEpilogue(MachineFunction &MF, in emitEpilogue() argument
1459 const MachineFrameInfo *MFI = MF.getFrameInfo(); in emitEpilogue()
1460 X86MachineFunctionInfo *X86FI = MF.getInfo<X86MachineFunctionInfo>(); in emitEpilogue()
1467 unsigned FramePtr = TRI->getFrameRegister(MF); in emitEpilogue()
1472 bool IsWin64Prologue = MF.getTarget().getMCAsmInfo()->usesWindowsCFI(); in emitEpilogue()
1474 IsWin64Prologue && MF.getFunction()->needsUnwindTableEntry(); in emitEpilogue()
1480 uint64_t MaxAlign = calculateMaxStackAlign(MF); in emitEpilogue()
1487 classifyEHPersonality(MF.getFunction()->getPersonalityFn())) && in emitEpilogue()
1490 NumBytes = getWinEHFuncletFrameSize(MF); in emitEpilogue()
1491 assert(hasFP(MF) && "EH funclets without FP not yet implemented"); in emitEpilogue()
1499 NumBytes = getWinEHFuncletFrameSize(MF); in emitEpilogue()
1500 assert(hasFP(MF) && "EH funclets without FP not yet implemented"); in emitEpilogue()
1504 } else if (hasFP(MF)) { in emitEpilogue()
1511 if (TRI->needsStackRealignment(MF) && !IsWin64Prologue) in emitEpilogue()
1570 if ((TRI->needsStackRealignment(MF) || MFI->hasVarSizedObjects()) && in emitEpilogue()
1572 if (TRI->needsStackRealignment(MF)) in emitEpilogue()
1627 int X86FrameLowering::getFrameIndexReference(const MachineFunction &MF, int FI, in getFrameIndexReference() argument
1629 const MachineFrameInfo *MFI = MF.getFrameInfo(); in getFrameIndexReference()
1634 if (TRI->hasBasePointer(MF)) in getFrameIndexReference()
1636 else if (TRI->needsStackRealignment(MF)) in getFrameIndexReference()
1639 FrameReg = TRI->getFrameRegister(MF); in getFrameIndexReference()
1646 const X86MachineFunctionInfo *X86FI = MF.getInfo<X86MachineFunctionInfo>(); in getFrameIndexReference()
1649 bool HasFP = hasFP(MF); in getFrameIndexReference()
1650 bool IsWin64Prologue = MF.getTarget().getMCAsmInfo()->usesWindowsCFI(); in getFrameIndexReference()
1677 if (TRI->hasBasePointer(MF)) { in getFrameIndexReference()
1686 } else if (TRI->needsStackRealignment(MF)) { in getFrameIndexReference()
1712 int X86FrameLowering::getFrameIndexReferenceFromSP(const MachineFunction &MF, in getFrameIndexReferenceFromSP() argument
1715 const MachineFrameInfo *MFI = MF.getFrameInfo(); in getFrameIndexReferenceFromSP()
1753 assert((!MFI->isFixedObjectIndex(FI) || !TRI->needsStackRealignment(MF) || in getFrameIndexReferenceFromSP()
1759 MF.getInfo<X86MachineFunctionInfo>()->getTCReturnAddrDelta(); in getFrameIndexReferenceFromSP()
1800 MachineFunction &MF, const TargetRegisterInfo *TRI, in assignCalleeSavedSpillSlots() argument
1802 MachineFrameInfo *MFI = MF.getFrameInfo(); in assignCalleeSavedSpillSlots()
1803 X86MachineFunctionInfo *X86FI = MF.getInfo<X86MachineFunctionInfo>(); in assignCalleeSavedSpillSlots()
1808 if (hasFP(MF)) { in assignCalleeSavedSpillSlots()
1816 unsigned FPReg = TRI->getFrameRegister(MF); in assignCalleeSavedSpillSlots()
1956 void X86FrameLowering::determineCalleeSaves(MachineFunction &MF, in determineCalleeSaves() argument
1959 TargetFrameLowering::determineCalleeSaves(MF, SavedRegs, RS); in determineCalleeSaves()
1961 MachineFrameInfo *MFI = MF.getFrameInfo(); in determineCalleeSaves()
1963 X86MachineFunctionInfo *X86FI = MF.getInfo<X86MachineFunctionInfo>(); in determineCalleeSaves()
1981 if (TRI->hasBasePointer(MF)) { in determineCalleeSaves()
1985 if (MF.getMMI().hasEHFunclets()) { in determineCalleeSaves()
1994 HasNestArgument(const MachineFunction *MF) { in HasNestArgument() argument
1995 const Function *F = MF->getFunction(); in HasNestArgument()
2009 GetScratchRegister(bool Is64Bit, bool IsLP64, const MachineFunction &MF, bool Primary) { in GetScratchRegister() argument
2010 CallingConv::ID CallingConvention = MF.getFunction()->getCallingConv(); in GetScratchRegister()
2027 bool IsNested = HasNestArgument(&MF); in GetScratchRegister()
2046 MachineFunction &MF, MachineBasicBlock &PrologueMBB) const { in adjustForSegmentedStacks() argument
2047 MachineFrameInfo *MFI = MF.getFrameInfo(); in adjustForSegmentedStacks()
2052 unsigned ScratchReg = GetScratchRegister(Is64Bit, IsLP64, MF, true); in adjustForSegmentedStacks()
2053 assert(!MF.getRegInfo().isLiveIn(ScratchReg) && in adjustForSegmentedStacks()
2056 if (MF.getFunction()->isVarArg()) in adjustForSegmentedStacks()
2072 MachineBasicBlock *allocMBB = MF.CreateMachineBasicBlock(); in adjustForSegmentedStacks()
2073 MachineBasicBlock *checkMBB = MF.CreateMachineBasicBlock(); in adjustForSegmentedStacks()
2074 X86MachineFunctionInfo *X86FI = MF.getInfo<X86MachineFunctionInfo>(); in adjustForSegmentedStacks()
2079 IsNested = HasNestArgument(&MF); in adjustForSegmentedStacks()
2092 MF.push_front(allocMBB); in adjustForSegmentedStacks()
2093 MF.push_front(checkMBB); in adjustForSegmentedStacks()
2164 ScratchReg2 = GetScratchRegister(Is64Bit, IsLP64, MF, true); in adjustForSegmentedStacks()
2168 ScratchReg2 = GetScratchRegister(Is64Bit, IsLP64, MF, false); in adjustForSegmentedStacks()
2172 SaveScratch2 = MF.getRegInfo().isLiveIn(ScratchReg2); in adjustForSegmentedStacks()
2176 assert((!MF.getRegInfo().isLiveIn(ScratchReg2) || SaveScratch2) && in adjustForSegmentedStacks()
2227 if (Is64Bit && MF.getTarget().getCodeModel() == CodeModel::Large) { in adjustForSegmentedStacks()
2248 MF.getMMI().setUsesMorestackAddr(true); in adjustForSegmentedStacks()
2269 MF.verify(); in adjustForSegmentedStacks()
2289 MachineFunction &MF, MachineBasicBlock &PrologueMBB) const { in adjustForHiPEPrologue() argument
2290 MachineFrameInfo *MFI = MF.getFrameInfo(); in adjustForHiPEPrologue()
2296 unsigned CallerStkArity = MF.getFunction()->arg_size() > CCRegisteredArgs ? in adjustForHiPEPrologue()
2297 MF.getFunction()->arg_size() - CCRegisteredArgs : 0; in adjustForHiPEPrologue()
2313 for (MachineFunction::iterator MBBI = MF.begin(), MBBE = MF.end(); in adjustForHiPEPrologue()
2353 MachineBasicBlock *stackCheckMBB = MF.CreateMachineBasicBlock(); in adjustForHiPEPrologue()
2354 MachineBasicBlock *incStackMBB = MF.CreateMachineBasicBlock(); in adjustForHiPEPrologue()
2361 MF.push_front(incStackMBB); in adjustForHiPEPrologue()
2362 MF.push_front(stackCheckMBB); in adjustForHiPEPrologue()
2382 ScratchReg = GetScratchRegister(Is64Bit, IsLP64, MF, true); in adjustForHiPEPrologue()
2383 assert(!MF.getRegInfo().isLiveIn(ScratchReg) && in adjustForHiPEPrologue()
2409 MF.verify(); in adjustForHiPEPrologue()
2482 eliminateCallFramePseudoInstr(MachineFunction &MF, MachineBasicBlock &MBB, in eliminateCallFramePseudoInstr() argument
2484 bool reserveCallFrame = hasReservedCallFrame(MF); in eliminateCallFramePseudoInstr()
2503 MachineModuleInfo &MMI = MF.getMMI(); in eliminateCallFramePseudoInstr()
2504 const Function *Fn = MF.getFunction(); in eliminateCallFramePseudoInstr()
2505 bool WindowsCFI = MF.getTarget().getMCAsmInfo()->usesWindowsCFI(); in eliminateCallFramePseudoInstr()
2517 !MF.getMMI().getLandingPads().empty(); in eliminateCallFramePseudoInstr()
2520 MF.getInfo<X86MachineFunctionInfo>()->getHasPushSequences()) in eliminateCallFramePseudoInstr()
2534 if (isDestroy && InternalAmt && DwarfCFI && !hasFP(MF)) in eliminateCallFramePseudoInstr()
2547 if (DwarfCFI && !hasFP(MF)) { in eliminateCallFramePseudoInstr()
2602 bool X86FrameLowering::enableShrinkWrapping(const MachineFunction &MF) const { in enableShrinkWrapping()
2605 return MF.getFunction()->hasFnAttribute(Attribute::NoUnwind) || hasFP(MF); in enableShrinkWrapping()
2616 MachineFunction &MF = *MBB.getParent(); in restoreWin32EHStackPointers() local
2617 unsigned FramePtr = TRI->getFrameRegister(MF); in restoreWin32EHStackPointers()
2619 WinEHFuncInfo &FuncInfo = *MF.getWinEHFuncInfo(); in restoreWin32EHStackPointers()
2620 X86MachineFunctionInfo *X86FI = MF.getInfo<X86MachineFunctionInfo>(); in restoreWin32EHStackPointers()
2621 MachineFrameInfo *MFI = MF.getFrameInfo(); in restoreWin32EHStackPointers()
2636 int EHRegOffset = getFrameIndexReference(MF, FI, UsedReg); in restoreWin32EHStackPointers()
2659 getFrameIndexReference(MF, X86FI->getSEHFramePtrSaveIndex(), UsedReg); in restoreWin32EHStackPointers()
2670 unsigned X86FrameLowering::getWinEHParentFrameOffset(const MachineFunction &MF) const { in getWinEHParentFrameOffset()
2676 Offset += MF.getInfo<X86MachineFunctionInfo>()->getCalleeSavedFrameSize(); in getWinEHParentFrameOffset()
2678 Offset += getWinEHFuncletFrameSize(MF); in getWinEHParentFrameOffset()
2683 MachineFunction &MF, RegScavenger *RS) const { in processFunctionBeforeFrameFinalized() argument
2686 const Function *Fn = MF.getFunction(); in processFunctionBeforeFrameFinalized()
2687 if (!STI.is64Bit() || !MF.getMMI().hasEHFunclets() || in processFunctionBeforeFrameFinalized()
2696 MachineFrameInfo *MFI = MF.getFrameInfo(); in processFunctionBeforeFrameFinalized()
2704 MF.getWinEHFuncInfo()->UnwindHelpFrameIdx = UnwindHelpFI; in processFunctionBeforeFrameFinalized()
2708 MachineBasicBlock &MBB = MF.front(); in processFunctionBeforeFrameFinalized()