Lines Matching refs:VNI
94 SibValueInfo(unsigned Reg, VNInfo *VNI) in SibValueInfo()
95 : AllDefsAreReloads(false), SpillReg(Reg), SpillVNI(VNI), DefMI(0) {} in SibValueInfo()
140 void eliminateRedundantSpills(LiveInterval &LI, VNInfo *VNI);
312 VNInfo *VNI; in traceSiblingValue() local
313 tie(Reg, VNI) = WorkList.pop_back_val(); in traceSiblingValue()
314 if (!Visited.insert(VNI)) in traceSiblingValue()
319 MachineBasicBlock *MBB = LIS.getMBBFromIndex(VNI->def); in traceSiblingValue()
336 if (VNI->def < SVI.SpillVNI->def) { in traceSiblingValue()
338 << PrintReg(Reg) << ':' << VNI->id << '@' << VNI->def in traceSiblingValue()
341 SVI.SpillVNI = VNI; in traceSiblingValue()
349 << ':' << VNI->id << '@' << VNI->def << '\n'); in traceSiblingValue()
351 SVI.SpillVNI = VNI; in traceSiblingValue()
359 if (VNI->isPHIDef()) { in traceSiblingValue()
360 if (VNI->def == OrigVNI->def) { in traceSiblingValue()
362 << VNI->id << '@' << VNI->def << '\n'); in traceSiblingValue()
368 MachineBasicBlock *MBB = LIS.getMBBFromIndex(VNI->def); in traceSiblingValue()
378 MachineInstr *MI = LIS.getInstructionFromIndex(VNI->def); in traceSiblingValue()
385 VNInfo *SrcVNI = SrcLI.getVNInfoAt(VNI->def.getUseIndex()); in traceSiblingValue()
398 << VNI->id << "@" << VNI->def << '\n'); in traceSiblingValue()
404 if (VNI == UseVNI) { in traceSiblingValue()
411 << VNI->id << '@' << VNI->def << '\t' << *MI); in traceSiblingValue()
446 VNInfo *VNI = *VI; in analyzeSiblingValues() local
447 if (VNI->isUnused()) in analyzeSiblingValues()
451 if (VNI->isPHIDef() || VNI->getCopy()) { in analyzeSiblingValues()
452 VNInfo *OrigVNI = OrigLI.getVNInfoAt(VNI->def); in analyzeSiblingValues()
454 if (OrigVNI->def != VNI->def) in analyzeSiblingValues()
455 DefMI = traceSiblingValue(Reg, VNI, OrigVNI); in analyzeSiblingValues()
457 if (!DefMI && !VNI->isPHIDef()) in analyzeSiblingValues()
458 DefMI = LIS.getInstructionFromIndex(VNI->def); in analyzeSiblingValues()
459 if (DefMI && Edit->checkRematerializable(VNI, DefMI, TII, AA)) { in analyzeSiblingValues()
460 DEBUG(dbgs() << "Value " << PrintReg(Reg) << ':' << VNI->id << '@' in analyzeSiblingValues()
461 << VNI->def << " may remat from " << *DefMI); in analyzeSiblingValues()
471 VNInfo *VNI = SpillLI.getVNInfoAt(Idx.getDefIndex()); in hoistSpill() local
472 assert(VNI && VNI->def == Idx.getDefIndex() && "Not defined by copy"); in hoistSpill()
473 SibValueMap::iterator I = SibValues.find(VNI); in hoistSpill()
480 if (!SVI.AllDefsAreReloads && SVI.SpillVNI == VNI) in hoistSpill()
543 void InlineSpiller::eliminateRedundantSpills(LiveInterval &SLI, VNInfo *VNI) { in eliminateRedundantSpills() argument
544 assert(VNI && "Missing value"); in eliminateRedundantSpills()
546 WorkList.push_back(std::make_pair(&SLI, VNI)); in eliminateRedundantSpills()
551 tie(LI, VNI) = WorkList.pop_back_val(); in eliminateRedundantSpills()
554 << VNI->id << '@' << VNI->def << " in " << *LI << '\n'); in eliminateRedundantSpills()
561 StackInt->MergeValueInAsValue(*LI, VNI, StackInt->getValNumInfo(0)); in eliminateRedundantSpills()
570 if (LI->getVNInfoAt(Idx) != VNI) in eliminateRedundantSpills()
605 void InlineSpiller::markValueUsed(LiveInterval *LI, VNInfo *VNI) { in markValueUsed() argument
607 WorkList.push_back(std::make_pair(LI, VNI)); in markValueUsed()
609 tie(LI, VNI) = WorkList.pop_back_val(); in markValueUsed()
610 if (!UsedValues.insert(VNI)) in markValueUsed()
613 if (VNI->isPHIDef()) { in markValueUsed()
614 MachineBasicBlock *MBB = LIS.getMBBFromIndex(VNI->def); in markValueUsed()
625 MachineInstr *MI = LIS.getInstructionFromIndex(VNI->def); in markValueUsed()
630 VNInfo *SnipVNI = SnipLI.getVNInfoAt(VNI->def.getUseIndex()); in markValueUsed()
747 VNInfo *VNI = *I; in reMaterializeAll() local
748 if (VNI->isUnused() || VNI->isPHIDef() || UsedValues.count(VNI)) in reMaterializeAll()
750 MachineInstr *MI = LIS.getInstructionFromIndex(VNI->def); in reMaterializeAll()
921 if (VNInfo *VNI = OldLI.getVNInfoAt(Idx.getUseIndex())) in spillAroundUses() local
922 if (SlotIndex::isSameInstr(Idx, VNI->def)) in spillAroundUses()
923 Idx = VNI->def; in spillAroundUses()