Lines Matching defs:VirtReg
101 MCRegister selectOrSplit(const LiveInterval &VirtReg,
120 bool spillInterferences(const LiveInterval &VirtReg, MCRegister PhysReg,
149 bool RABasic::LRE_CanEraseVirtReg(Register VirtReg) {
150 LiveInterval &LI = LIS->getInterval(VirtReg);
151 if (VRM->hasPhys(VirtReg)) {
159 // dump will show the right state for that VirtReg.
164 void RABasic::LRE_WillShrinkVirtReg(Register VirtReg) {
165 if (!VRM->hasPhys(VirtReg))
169 LiveInterval &LI = LIS->getInterval(VirtReg);
209 // that interfere with VirtReg. The newly spilled or split live intervals are
211 bool RABasic::spillInterferences(const LiveInterval &VirtReg,
220 LiveIntervalUnion::Query &Q = Matrix->query(VirtReg, Unit);
222 if (!Intf->isSpillable() || Intf->weight() > VirtReg.weight())
228 << " interferences with " << VirtReg << "\n");
260 MCRegister RABasic::selectOrSplit(const LiveInterval &VirtReg,
267 AllocationOrder::create(VirtReg.reg(), *VRM, RegClassInfo, Matrix);
271 switch (Matrix->checkInterference(VirtReg, PhysReg)) {
289 if (!spillInterferences(VirtReg, PhysReg, SplitVRegs))
292 assert(!Matrix->checkInterference(VirtReg, PhysReg) &&
298 // No other spill candidates were found, so spill the current VirtReg.
299 LLVM_DEBUG(dbgs() << "spilling: " << VirtReg << '\n');
300 if (!VirtReg.isSpillable())
302 LiveRangeEdit LRE(&VirtReg, SplitVRegs, *MF, *LIS, VRM, this, &DeadRemats);