diff options
Diffstat (limited to 'llvm/lib/Target/Hexagon/HexagonFrameLowering.cpp')
-rw-r--r-- | llvm/lib/Target/Hexagon/HexagonFrameLowering.cpp | 82 |
1 files changed, 41 insertions, 41 deletions
diff --git a/llvm/lib/Target/Hexagon/HexagonFrameLowering.cpp b/llvm/lib/Target/Hexagon/HexagonFrameLowering.cpp index 9c177c21962..178458e75a3 100644 --- a/llvm/lib/Target/Hexagon/HexagonFrameLowering.cpp +++ b/llvm/lib/Target/Hexagon/HexagonFrameLowering.cpp @@ -457,8 +457,8 @@ void HexagonFrameLowering::emitPrologue(MachineFunction &MF, auto &HST = MF.getSubtarget<HexagonSubtarget>(); auto &HRI = *HST.getRegisterInfo(); - MachineFrameInfo *MFI = MF.getFrameInfo(); - const std::vector<CalleeSavedInfo> &CSI = MFI->getCalleeSavedInfo(); + MachineFrameInfo &MFI = MF.getFrameInfo(); + const std::vector<CalleeSavedInfo> &CSI = MFI.getCalleeSavedInfo(); MachineBasicBlock *PrologB = &MF.front(), *EpilogB = nullptr; if (EnableShrinkWrapping) @@ -506,30 +506,30 @@ void HexagonFrameLowering::emitPrologue(MachineFunction &MF, void HexagonFrameLowering::insertPrologueInBlock(MachineBasicBlock &MBB, bool PrologueStubs) const { MachineFunction &MF = *MBB.getParent(); - MachineFrameInfo *MFI = MF.getFrameInfo(); + MachineFrameInfo &MFI = MF.getFrameInfo(); auto &HST = MF.getSubtarget<HexagonSubtarget>(); auto &HII = *HST.getInstrInfo(); auto &HRI = *HST.getRegisterInfo(); DebugLoc dl; - unsigned MaxAlign = std::max(MFI->getMaxAlignment(), getStackAlignment()); + unsigned MaxAlign = std::max(MFI.getMaxAlignment(), getStackAlignment()); // Calculate the total stack frame size. // Get the number of bytes to allocate from the FrameInfo. - unsigned FrameSize = MFI->getStackSize(); + unsigned FrameSize = MFI.getStackSize(); // Round up the max call frame size to the max alignment on the stack. - unsigned MaxCFA = alignTo(MFI->getMaxCallFrameSize(), MaxAlign); - MFI->setMaxCallFrameSize(MaxCFA); + unsigned MaxCFA = alignTo(MFI.getMaxCallFrameSize(), MaxAlign); + MFI.setMaxCallFrameSize(MaxCFA); FrameSize = MaxCFA + alignTo(FrameSize, MaxAlign); - MFI->setStackSize(FrameSize); + MFI.setStackSize(FrameSize); bool AlignStack = (MaxAlign > getStackAlignment()); // Get the number of bytes to allocate from the FrameInfo. - unsigned NumBytes = MFI->getStackSize(); + unsigned NumBytes = MFI.getStackSize(); unsigned SP = HRI.getStackRegister(); - unsigned MaxCF = MFI->getMaxCallFrameSize(); + unsigned MaxCF = MFI.getMaxCallFrameSize(); MachineBasicBlock::iterator InsertPt = MBB.begin(); auto *FuncInfo = MF.getInfo<HexagonMachineFunctionInfo>(); @@ -674,7 +674,7 @@ void HexagonFrameLowering::updateEntryPaths(MachineFunction &MF, Worklist.insert(EntryB.getNumber()); unsigned SaveN = SaveB.getNumber(); - auto &CSI = MF.getFrameInfo()->getCalleeSavedInfo(); + auto &CSI = MF.getFrameInfo().getCalleeSavedInfo(); for (unsigned i = 0; i < Worklist.size(); ++i) { unsigned BN = Worklist[i]; @@ -698,7 +698,7 @@ bool HexagonFrameLowering::updateExitPaths(MachineBasicBlock &MBB, if (DoneT[BN]) return true; - auto &CSI = MBB.getParent()->getFrameInfo()->getCalleeSavedInfo(); + auto &CSI = MBB.getParent()->getFrameInfo().getCalleeSavedInfo(); Path[BN] = true; bool ReachedExit = false; @@ -767,7 +767,7 @@ void HexagonFrameLowering::insertCFIInstructions(MachineFunction &MF) const { void HexagonFrameLowering::insertCFIInstructionsAt(MachineBasicBlock &MBB, MachineBasicBlock::iterator At) const { MachineFunction &MF = *MBB.getParent(); - MachineFrameInfo &MFI = *MF.getFrameInfo(); + MachineFrameInfo &MFI = MF.getFrameInfo(); MachineModuleInfo &MMI = MF.getMMI(); auto &HST = MF.getSubtarget<HexagonSubtarget>(); auto &HII = *HST.getInstrInfo(); @@ -879,7 +879,7 @@ void HexagonFrameLowering::insertCFIInstructionsAt(MachineBasicBlock &MBB, bool HexagonFrameLowering::hasFP(const MachineFunction &MF) const { - auto &MFI = *MF.getFrameInfo(); + auto &MFI = MF.getFrameInfo(); auto &HRI = *MF.getSubtarget<HexagonSubtarget>().getRegisterInfo(); bool HasFixed = MFI.getNumFixedObjects(); @@ -996,7 +996,7 @@ static const char *getSpillFunctionFor(unsigned MaxReg, SpillKind SpillType, int HexagonFrameLowering::getFrameIndexReference(const MachineFunction &MF, int FI, unsigned &FrameReg) const { - auto &MFI = *MF.getFrameInfo(); + auto &MFI = MF.getFrameInfo(); auto &HRI = *MF.getSubtarget<HexagonSubtarget>().getRegisterInfo(); int Offset = MFI.getObjectOffset(FI); @@ -1229,32 +1229,32 @@ void HexagonFrameLowering::processFunctionBeforeFrameFinalized( // objects, then we need to map all spill slots to fixed positions, so that // they can be accessed through FP. Otherwise they would have to be accessed // via AP, which may not be available at the particular place in the program. - MachineFrameInfo *MFI = MF.getFrameInfo(); - bool HasAlloca = MFI->hasVarSizedObjects(); - bool NeedsAlign = (MFI->getMaxAlignment() > getStackAlignment()); + MachineFrameInfo &MFI = MF.getFrameInfo(); + bool HasAlloca = MFI.hasVarSizedObjects(); + bool NeedsAlign = (MFI.getMaxAlignment() > getStackAlignment()); if (!HasAlloca || !NeedsAlign) return; - unsigned LFS = MFI->getLocalFrameSize(); - for (int i = 0, e = MFI->getObjectIndexEnd(); i != e; ++i) { - if (!MFI->isSpillSlotObjectIndex(i) || MFI->isDeadObjectIndex(i)) + unsigned LFS = MFI.getLocalFrameSize(); + for (int i = 0, e = MFI.getObjectIndexEnd(); i != e; ++i) { + if (!MFI.isSpillSlotObjectIndex(i) || MFI.isDeadObjectIndex(i)) continue; - unsigned S = MFI->getObjectSize(i); + unsigned S = MFI.getObjectSize(i); // Reduce the alignment to at most 8. This will require unaligned vector // stores if they happen here. - unsigned A = std::max(MFI->getObjectAlignment(i), 8U); - MFI->setObjectAlignment(i, 8); + unsigned A = std::max(MFI.getObjectAlignment(i), 8U); + MFI.setObjectAlignment(i, 8); LFS = alignTo(LFS+S, A); - MFI->mapLocalFrameObject(i, -LFS); + MFI.mapLocalFrameObject(i, -LFS); } - MFI->setLocalFrameSize(LFS); - unsigned A = MFI->getLocalFrameMaxAlign(); + MFI.setLocalFrameSize(LFS); + unsigned A = MFI.getLocalFrameMaxAlign(); assert(A <= 8 && "Unexpected local frame alignment"); if (A == 0) - MFI->setLocalFrameMaxAlign(8); - MFI->setUseLocalStackAllocationBlock(true); + MFI.setLocalFrameMaxAlign(8); + MFI.setUseLocalStackAllocationBlock(true); // Set the physical aligned-stack base address register. unsigned AP = 0; @@ -1303,7 +1303,7 @@ bool HexagonFrameLowering::assignCalleeSavedSpillSlots(MachineFunction &MF, const TargetRegisterInfo *TRI, std::vector<CalleeSavedInfo> &CSI) const { DEBUG(dbgs() << LLVM_FUNCTION_NAME << " on " << MF.getFunction()->getName() << '\n'); - MachineFrameInfo *MFI = MF.getFrameInfo(); + MachineFrameInfo &MFI = MF.getFrameInfo(); BitVector SRegs(Hexagon::NUM_TARGET_REGS); // Generate a set of unique, callee-saved registers (SRegs), where each @@ -1383,7 +1383,7 @@ bool HexagonFrameLowering::assignCalleeSavedSpillSlots(MachineFunction &MF, if (!SRegs[S->Reg]) continue; const TargetRegisterClass *RC = TRI->getMinimalPhysRegClass(S->Reg); - int FI = MFI->CreateFixedSpillStackObject(RC->getSize(), S->Offset); + int FI = MFI.CreateFixedSpillStackObject(RC->getSize(), S->Offset); MinOffset = std::min(MinOffset, S->Offset); CSI.push_back(CalleeSavedInfo(S->Reg, FI)); SRegs[S->Reg] = false; @@ -1399,7 +1399,7 @@ bool HexagonFrameLowering::assignCalleeSavedSpillSlots(MachineFunction &MF, unsigned Align = std::min(RC->getAlignment(), getStackAlignment()); assert(isPowerOf2_32(Align)); Off &= -Align; - int FI = MFI->CreateFixedSpillStackObject(RC->getSize(), Off); + int FI = MFI.CreateFixedSpillStackObject(RC->getSize(), Off); MinOffset = std::min(MinOffset, Off); CSI.push_back(CalleeSavedInfo(R, FI)); SRegs[R] = false; @@ -1409,7 +1409,7 @@ bool HexagonFrameLowering::assignCalleeSavedSpillSlots(MachineFunction &MF, dbgs() << "CS information: {"; for (unsigned i = 0, n = CSI.size(); i < n; ++i) { int FI = CSI[i].getFrameIdx(); - int Off = MFI->getObjectOffset(FI); + int Off = MFI.getObjectOffset(FI); dbgs() << ' ' << PrintReg(CSI[i].getReg(), TRI) << ":fi#" << FI << ":sp"; if (Off >= 0) dbgs() << '+'; @@ -1602,7 +1602,7 @@ bool HexagonFrameLowering::expandStoreVec2(MachineBasicBlock &B, const HexagonInstrInfo &HII, SmallVectorImpl<unsigned> &NewRegs) const { MachineFunction &MF = *B.getParent(); auto &HST = MF.getSubtarget<HexagonSubtarget>(); - auto &MFI = *MF.getFrameInfo(); + auto &MFI = MF.getFrameInfo(); auto &HRI = *MF.getSubtarget<HexagonSubtarget>().getRegisterInfo(); MachineInstr *MI = &*It; DebugLoc DL = MI->getDebugLoc(); @@ -1656,7 +1656,7 @@ bool HexagonFrameLowering::expandLoadVec2(MachineBasicBlock &B, const HexagonInstrInfo &HII, SmallVectorImpl<unsigned> &NewRegs) const { MachineFunction &MF = *B.getParent(); auto &HST = MF.getSubtarget<HexagonSubtarget>(); - auto &MFI = *MF.getFrameInfo(); + auto &MFI = MF.getFrameInfo(); auto &HRI = *MF.getSubtarget<HexagonSubtarget>().getRegisterInfo(); MachineInstr *MI = &*It; DebugLoc DL = MI->getDebugLoc(); @@ -1707,7 +1707,7 @@ bool HexagonFrameLowering::expandStoreVec(MachineBasicBlock &B, const HexagonInstrInfo &HII, SmallVectorImpl<unsigned> &NewRegs) const { MachineFunction &MF = *B.getParent(); auto &HST = MF.getSubtarget<HexagonSubtarget>(); - auto &MFI = *MF.getFrameInfo(); + auto &MFI = MF.getFrameInfo(); MachineInstr *MI = &*It; DebugLoc DL = MI->getDebugLoc(); @@ -1745,7 +1745,7 @@ bool HexagonFrameLowering::expandLoadVec(MachineBasicBlock &B, const HexagonInstrInfo &HII, SmallVectorImpl<unsigned> &NewRegs) const { MachineFunction &MF = *B.getParent(); auto &HST = MF.getSubtarget<HexagonSubtarget>(); - auto &MFI = *MF.getFrameInfo(); + auto &MFI = MF.getFrameInfo(); MachineInstr *MI = &*It; DebugLoc DL = MI->getDebugLoc(); @@ -1859,7 +1859,7 @@ void HexagonFrameLowering::determineCalleeSaves(MachineFunction &MF, // We need to reserve a a spill slot if scavenging could potentially require // spilling a scavenged register. if (!NewRegs.empty()) { - MachineFrameInfo &MFI = *MF.getFrameInfo(); + MachineFrameInfo &MFI = MF.getFrameInfo(); MachineRegisterInfo &MRI = MF.getRegInfo(); SetVector<const TargetRegisterClass*> SpillRCs; // Reserve an int register in any case, because it could be used to hold @@ -2297,10 +2297,10 @@ void HexagonFrameLowering::expandAlloca(MachineInstr *AI, bool HexagonFrameLowering::needsAligna(const MachineFunction &MF) const { - const MachineFrameInfo *MFI = MF.getFrameInfo(); - if (!MFI->hasVarSizedObjects()) + const MachineFrameInfo &MFI = MF.getFrameInfo(); + if (!MFI.hasVarSizedObjects()) return false; - unsigned MaxA = MFI->getMaxAlignment(); + unsigned MaxA = MFI.getMaxAlignment(); if (MaxA <= getStackAlignment()) return false; return true; |