Lines Matching refs:VirtReg
103 unsigned selectOrSplit(LiveInterval &VirtReg,
117 bool spillInterferences(LiveInterval &VirtReg, unsigned PhysReg,
144 bool RABasic::LRE_CanEraseVirtReg(unsigned VirtReg) {
145 LiveInterval &LI = LIS->getInterval(VirtReg);
146 if (VRM->hasPhys(VirtReg)) {
154 // dump will show the right state for that VirtReg.
159 void RABasic::LRE_WillShrinkVirtReg(unsigned VirtReg) {
160 if (!VRM->hasPhys(VirtReg))
164 LiveInterval &LI = LIS->getInterval(VirtReg);
202 // that interfere with VirtReg. The newly spilled or split live intervals are
204 bool RABasic::spillInterferences(LiveInterval &VirtReg, unsigned PhysReg,
212 LiveIntervalUnion::Query &Q = Matrix->query(VirtReg, *Units);
216 if (!Intf->isSpillable() || Intf->weight > VirtReg.weight)
222 << " interferences with " << VirtReg << "\n");
256 unsigned RABasic::selectOrSplit(LiveInterval &VirtReg,
262 AllocationOrder Order(VirtReg.reg, *VRM, RegClassInfo, Matrix);
265 switch (Matrix->checkInterference(VirtReg, PhysReg)) {
284 if (!spillInterferences(VirtReg, *PhysRegI, SplitVRegs))
287 assert(!Matrix->checkInterference(VirtReg, *PhysRegI) &&
293 // No other spill candidates were found, so spill the current VirtReg.
294 LLVM_DEBUG(dbgs() << "spilling: " << VirtReg << '\n');
295 if (!VirtReg.isSpillable())
297 LiveRangeEdit LRE(&VirtReg, SplitVRegs, *MF, *LIS, VRM, this, &DeadRemats);