Lines Matching refs:SVI
321 const InlineSpiller::SibValueInfo &SVI) {
322 OS << "spill " << PrintReg(SVI.SpillReg) << ':'
323 << SVI.SpillVNI->id << '@' << SVI.SpillVNI->def;
324 if (SVI.SpillMBB)
325 OS << " in BB#" << SVI.SpillMBB->getNumber();
326 if (SVI.AllDefsAreReloads)
328 if (SVI.DefByOrigPHI)
330 if (SVI.KillsSource)
333 for (unsigned i = 0, e = SVI.Deps.size(); i != e; ++i)
334 OS << ' ' << SVI.Deps[i]->id << '@' << SVI.Deps[i]->def;
336 if (SVI.DefMI)
337 OS << " def: " << *SVI.DefMI;
344 /// propagateSiblingValue - Propagate the value in SVI to dependents if it is
351 SibValueMap::value_type *SVI = &*SVIIter;
353 // When VNI is non-NULL, add it to SVI's deps, and only propagate to that.
357 SVI->second.Deps.push_back(VNI);
361 if (!SVI->second.hasDef())
366 WorkList.insert(SVI);
369 SVI = WorkList.pop_back_val();
370 TinyPtrVector<VNInfo*> *Deps = VNI ? &FirstDeps : &SVI->second.Deps;
373 SibValueInfo &SV = SVI->second;
378 << SVI->first->id << '@' << SVI->first->def << ":\t" << SV);
494 SibValueMap::iterator SVI;
496 std::tie(SVI, Inserted) =
500 << UseVNI->id << '@' << UseVNI->def << ' ' << SVI->second);
501 return SVI->second.DefMI;
520 SVI = SibValues.find(VNI);
521 assert(SVI != SibValues.end() && "Missing SibValues entry");
528 SVI->second.DefByOrigPHI = true;
529 SVI->second.AllDefsAreReloads = false;
530 propagateSiblingValue(SVI);
574 std::tie(SVI, Inserted) =
578 SVI->second.Deps.push_back(PHIs[pi]);
584 propagateSiblingValue(SVI);
601 SVI->second.KillsSource = SrcQ.isKill();
605 << " kill=" << unsigned(SVI->second.KillsSource) << '\n');
607 std::tie(SVI, Inserted) = SibValues.insert(
612 propagateSiblingValue(SVI, VNI);
619 SVI->second.DefMI = MI;
620 SVI->second.SpillMBB = MI->getParent();
624 propagateSiblingValue(SVI);
631 SVI->second.AllDefsAreReloads = false;
632 propagateSiblingValue(SVI);
637 SVI = SibValues.find(UseVNI);
638 assert(SVI != SibValues.end() && "Didn't compute requested info");
639 DEBUG(dbgs() << " traced to:\t" << SVI->second);
640 return SVI->second.DefMI;
693 const SibValueInfo &SVI = I->second;
696 if (!SVI.AllDefsAreReloads && SVI.SpillVNI == VNI)
700 if (!LIS.hasInterval(SVI.SpillReg)) {
701 DEBUG(dbgs() << "Stale interval: " << PrintReg(SVI.SpillReg) << '\n');
706 LiveInterval &SibLI = LIS.getInterval(SVI.SpillReg);
707 if (!SibLI.containsValue(SVI.SpillVNI)) {
708 DEBUG(dbgs() << "Stale value: " << PrintReg(SVI.SpillReg) << '\n');
724 if (SVI.AllDefsAreReloads) {
725 DEBUG(dbgs() << "\tno spill needed: " << SVI);
729 // We are going to spill SVI.SpillVNI immediately after its def, so clear out
731 eliminateRedundantSpills(SibLI, SVI.SpillVNI);
733 MachineBasicBlock *MBB = LIS.getMBBFromIndex(SVI.SpillVNI->def);
735 if (SVI.SpillVNI->isPHIDef())
738 MachineInstr *DefMI = LIS.getInstructionFromIndex(SVI.SpillVNI->def);
744 TII.storeRegToStackSlot(*MBB, MII, SVI.SpillReg, false, StackSlot,
745 MRI.getRegClass(SVI.SpillReg), &TRI);
748 DEBUG(dbgs() << "\thoisted: " << SVI.SpillVNI->def << '\t' << *MII);