Lines Matching +full:alloc +full:- +full:ranges

1 //===- LiveIntervalCalc.cpp - Calculate live interval --------------------===//
5 // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
7 //===----------------------------------------------------------------------===//
11 //===----------------------------------------------------------------------===//
32 static void createDeadDef(SlotIndexes &Indexes, VNInfo::Allocator &Alloc, in createDeadDef() argument
39 LR.createDeadDef(DefIdx, Alloc); in createDeadDef()
45 VNInfo::Allocator *Alloc = getVNAlloc(); in calculate() local
52 const TargetRegisterInfo &TRI = *MRI->getTargetRegisterInfo(); in calculate()
54 for (const MachineOperand &MO : MRI->reg_nodbg_operands(Reg)) { in calculate()
61 : MRI->getMaxLaneMaskForVReg(Reg); in calculate()
65 LaneBitmask ClassMask = MRI->getMaxLaneMaskForVReg(Reg); in calculate()
66 LI.createSubRangeFrom(*Alloc, ClassMask, LI); in calculate()
70 *Alloc, SubMask, in calculate()
71 [&MO, Indexes, Alloc](LiveInterval::SubRange &SR) { in calculate()
73 createDeadDef(*Indexes, *Alloc, SR, MO); in calculate()
81 createDeadDef(*Indexes, *Alloc, LI, MO); in calculate()
84 // We may have created empty live ranges for partially undefined uses, we in calculate()
95 SubLIC.reset(MF, Indexes, DomTree, Alloc); in calculate()
112 VNInfo::Allocator *Alloc = getVNAlloc(); in constructMainRangeFromSubranges() local
115 if (!VNI->isUnused() && !VNI->isPHIDef()) in constructMainRangeFromSubranges()
116 MainRange.createDeadDef(VNI->def, *Alloc); in constructMainRangeFromSubranges()
126 VNInfo::Allocator *Alloc = getVNAlloc(); in createDeadDefs() local
131 for (MachineOperand &MO : MRI->def_operands(Reg)) in createDeadDefs()
132 createDeadDef(*Indexes, *Alloc, LR, MO); in createDeadDefs()
141 LI->computeSubRangeUndefs(Undefs, Mask, *MRI, *Indexes); in extendToUses()
145 const TargetRegisterInfo &TRI = *MRI->getTargetRegisterInfo(); in extendToUses()
146 for (MachineOperand &MO : MRI->reg_nodbg_operands(Reg)) { in extendToUses()
153 // interval). For subranges, definitions of non-overlapping subregisters in extendToUses()
170 unsigned OpNo = (&MO - &MI->getOperand(0)); in extendToUses()
172 if (MI->isPHI()) { in extendToUses()
176 UseIdx = Indexes->getMBBEndIdx(MI->getOperand(OpNo + 1).getMBB()); in extendToUses()
178 // Check for early-clobber redefs. in extendToUses()
183 else if (MI->isRegTiedToDefOperand(OpNo, &DefIdx)) { in extendToUses()
184 // FIXME: This would be a lot easier if tied early-clobber uses also in extendToUses()
185 // had an early-clobber flag. in extendToUses()
186 isEarlyClobber = MI->getOperand(DefIdx).isEarlyClobber(); in extendToUses()
188 UseIdx = Indexes->getInstructionIndex(*MI).getRegSlot(isEarlyClobber); in extendToUses()