Lines Matching defs:VNI

121     SibValueInfo(unsigned Reg, VNInfo *VNI)
123 SpillReg(Reg), SpillVNI(VNI), SpillMBB(0), DefMI(0) {}
169 void propagateSiblingValue(SibValueMap::iterator, VNInfo *VNI = 0);
173 void eliminateRedundantSpills(LiveInterval &LI, VNInfo *VNI);
344 /// @param VNI Dependent value, or NULL to propagate to all saved dependents.
346 VNInfo *VNI) {
349 // When VNI is non-NULL, add it to SVI's deps, and only propagate to that.
351 if (VNI) {
352 FirstDeps.push_back(VNI);
353 SVI->second.Deps.push_back(VNI);
366 TinyPtrVector<VNInfo*> *Deps = VNI ? &FirstDeps : &SVI->second.Deps;
367 VNI = 0;
490 // List of (Reg, VNI) that have been inserted into SibValues, but need to be
497 VNInfo *VNI;
498 tie(Reg, VNI) = WorkList.pop_back_val();
499 DEBUG(dbgs() << " " << PrintReg(Reg) << ':' << VNI->id << '@' << VNI->def
503 SVI = SibValues.find(VNI);
507 if (VNI->isPHIDef()) {
509 if (VNI->def == OrigVNI->def) {
522 // jointly dominate VNI->def. This is not optimal since VNI may actually
566 // Propagate to all inserted PHIs, not just VNI.
574 MachineInstr *MI = LIS.getInstructionFromIndex(VNI->def);
581 LiveQueryResult SrcQ = SrcLI.Query(VNI->def);
595 propagateSiblingValue(SVI, VNI);
643 VNInfo *VNI = *VI;
644 if (VNI->isUnused())
647 if (!VNI->isPHIDef()) {
648 DefMI = LIS.getInstructionFromIndex(VNI->def);
652 if (VNI->isPHIDef() || DefMI->isCopy()) {
653 VNInfo *OrigVNI = OrigLI.getVNInfoAt(VNI->def);
655 if (OrigVNI->def != VNI->def)
656 DefMI = traceSiblingValue(Reg, VNI, OrigVNI);
658 if (DefMI && Edit->checkRematerializable(VNI, DefMI, AA)) {
659 DEBUG(dbgs() << "Value " << PrintReg(Reg) << ':' << VNI->id << '@'
660 << VNI->def << " may remat from " << *DefMI);
670 VNInfo *VNI = SpillLI.getVNInfoAt(Idx.getRegSlot());
671 assert(VNI && VNI->def == Idx.getRegSlot() && "Not defined by copy");
672 SibValueMap::iterator I = SibValues.find(VNI);
679 if (!SVI.AllDefsAreReloads && SVI.SpillVNI == VNI)
738 /// eliminateRedundantSpills - SLI:VNI is known to be on the stack. Remove any
740 void InlineSpiller::eliminateRedundantSpills(LiveInterval &SLI, VNInfo *VNI) {
741 assert(VNI && "Missing value");
743 WorkList.push_back(std::make_pair(&SLI, VNI));
748 tie(LI, VNI) = WorkList.pop_back_val();
751 << VNI->id << '@' << VNI->def << " in " << *LI << '\n');
757 // Add all of VNI's live range to StackInt.
758 StackInt->MergeValueInAsValue(*LI, VNI, StackInt->getValNumInfo(0));
761 // Find all spills and copies of VNI.
767 if (LI->getVNInfoAt(Idx) != VNI)
801 /// markValueUsed - Remember that VNI failed to rematerialize, so its defining
803 void InlineSpiller::markValueUsed(LiveInterval *LI, VNInfo *VNI) {
805 WorkList.push_back(std::make_pair(LI, VNI));
807 tie(LI, VNI) = WorkList.pop_back_val();
808 if (!UsedValues.insert(VNI))
811 if (VNI->isPHIDef()) {
812 MachineBasicBlock *MBB = LIS.getMBBFromIndex(VNI->def);
823 MachineInstr *MI = LIS.getInstructionFromIndex(VNI->def);
828 VNInfo *SnipVNI = SnipLI.getVNInfoAt(VNI->def.getRegSlot(true));
937 VNInfo *VNI = *I;
938 if (VNI->isUnused() || VNI->isPHIDef() || UsedValues.count(VNI))
940 MachineInstr *MI = LIS.getInstructionFromIndex(VNI->def);
1114 if (VNInfo *VNI = LR->getVNInfoAt(Idx))
1115 LR->removeValNo(VNI);
1224 if (VNInfo *VNI = OldLI.getVNInfoAt(Idx.getRegSlot(true)))
1225 if (SlotIndex::isSameInstr(Idx, VNI->def))
1226 Idx = VNI->def;