reference, declarationdefinition
definition → references, declarations, derived classes, virtual overrides
reference to multiple definitions → definitions
unreferenced

References

include/llvm/CodeGen/LiveInterval.h
  176         return start <= I && I < end;
  182         return (start <= S && S < end) && (start < E && E <= end);
  182         return (start <= S && S < end) && (start < E && E <= end);
  186         return std::tie(start, end) < std::tie(Other.start, Other.end);
  186         return std::tie(start, end) < std::tie(Other.start, Other.end);
  189         return start == Other.start && end == Other.end;
  189         return start == Other.start && end == Other.end;
  254         segments.push_back(Segment(S.start, S.end, valnos[S.valno->id]));
  266       while (I->end <= Pos) ++I;
  274       while (I->end <= Pos) ++I;
  385       return segments.back().end;
  520       removeSegment(S.start, S.end, RemoveDeadValNo);
  548         EndPoint = I->end;
  550         if (SlotIndex::isSameInstr(Idx, I->end)) {
  566         EndPoint = I->end;
  580             S.end.getBaseIndex())
  627         if (Seg->end <= *Idx) {
  631               return V < S.end;
  639         auto NotLessEnd = std::lower_bound(NotLessStart, EndIdx, Seg->end);
lib/CodeGen/InterferenceCache.cpp
  244     SlotIndex StopI = I->end;
lib/CodeGen/LiveDebugVariables.cpp
  733     if (Segment->end < Stop) {
  734       Stop = Segment->end;
 1056         if (LStop > LII->end)
 1057           LocMapI.setStopUnchecked(LII->end);
 1070           LocMapI.insert(LII->end, LStop, OldLoc);
 1076       if (LII->end < LocMapI.stop()) {
lib/CodeGen/LiveInterval.cpp
  128     if (I->end <= StartIdx)
  130     if (I->end < Use)
  144     if (I->end <= StartIdx)
  146     if (I->end < Use) {
  147       if (LR->isUndefIn(Undefs, I->end, BeforeUse))
  165     for (; MergeTo != segments().end() && NewEnd >= MergeTo->end; ++MergeTo)
  169     S->end = std::max(NewEnd, std::prev(MergeTo)->end);
  169     S->end = std::max(NewEnd, std::prev(MergeTo)->end);
  173     if (MergeTo != segments().end() && MergeTo->start <= I->end &&
  175       S->end = MergeTo->end;
  175       S->end = MergeTo->end;
  205     if (MergeTo->end >= NewStart && MergeTo->valno == ValNo) {
  206       segmentAt(MergeTo)->end = S->end;
  206       segmentAt(MergeTo)->end = S->end;
  212       MergeToSeg->end = S->end;
  212       MergeToSeg->end = S->end;
  220     SlotIndex Start = S.start, End = S.end;
  228         if (B->start <= Start && B->end >= Start) {
  235         assert(B->end <= Start &&
  250           if (End > I->end)
  331     if (Pos < (*PrevI).end)
  360     if (Pos < I[Mid].end) {
  437     if (i->end > j->start)
  463     assert(J->end >= I->start);
  465     if (J->start < I->end) {
  474     if (J->end > I->end) {
  474     if (J->end > I->end) {
  482     while (J->end < I->start);
  491   return I != begin() && (--I)->end > Start;
  505     while (I->end < O.end) {
  505     while (I->end < O.end) {
  509       if (I == end() || Last->end != I->start)
  560   assert(segments.empty() || segments.back().end <= S.start);
  594     if (I->end == End) {
  617   if (I->end == End) {
  618     I->end = Start;
  623   SlotIndex OldEnd = I->end;
  624   I->end = Start;   // Trim the old segment.
  674       if (OutIt->valno == nextValNo && OutIt->end == I->start) {
  675         OutIt->end = I->end;
  675         OutIt->end = I->end;
  682           OutIt->end = I->end;
  682           OutIt->end = I->end;
  728     Updater.add(S.start, S.end, LHSValNo);
  742       Updater.add(S.start, S.end, LHSValNo);
  772       if (Prev->valno == V2 && Prev->end == S->start) {
  773         Prev->end = S->end;
  773         Prev->end = S->end;
  790       if (I->start == S->end && I->valno == V2) {
  791         S->end = I->end;
  791         S->end = I->end;
  963     Sum += S.start.distance(S.end);
  992   return OS << '[' << S.start << ',' << S.end << ':' << S.valno->id << ')';
 1063     assert(I->end.isValid());
 1064     assert(I->start < I->end);
 1069       assert(I->end <= std::next(I)->start);
 1070       if (I->end == std::next(I)->start)
 1162   if (A.end == B.start)
 1164   if (A.end < B.start)
 1194   if (ReadI != E && ReadI->end <= Seg.start) {
 1202       while (ReadI != E && ReadI->end <= Seg.start)
 1206   assert(ReadI == E || ReadI->end > Seg.start);
 1212     if (ReadI->end >= Seg.end)
 1212     if (ReadI->end >= Seg.end)
 1221     Seg.end = std::max(Seg.end, ReadI->end);
 1221     Seg.end = std::max(Seg.end, ReadI->end);
 1221     Seg.end = std::max(Seg.end, ReadI->end);
 1228     Seg.end = std::max(Spills.back().end, Seg.end);
 1228     Seg.end = std::max(Spills.back().end, Seg.end);
 1228     Seg.end = std::max(Spills.back().end, Seg.end);
 1234     WriteI[-1].end = std::max(WriteI[-1].end, Seg.end);
 1234     WriteI[-1].end = std::max(WriteI[-1].end, Seg.end);
 1234     WriteI[-1].end = std::max(WriteI[-1].end, Seg.end);
lib/CodeGen/LiveIntervalUnion.cpp
   40     SegPos.insert(RegPos->start, RegPos->end, &VirtReg);
   50   SegPos.insert(RegEnd->start, RegEnd->end, &VirtReg);
   52     SegPos.insert(RegPos->start, RegPos->end, &VirtReg);
  145     while (LRI->start < LiveUnionI.stop() && LRI->end > LiveUnionI.start()) {
  163     assert(LRI->end <= LiveUnionI.start() && "Expected non-overlap");
lib/CodeGen/LiveIntervals.cpp
  514       if ((I == LI.begin() || std::prev(I)->end < Def) && !VNI->isPHIDef()) {
  520     if (I->end != Def.getDeadSlot())
  598     if (Segment->end != VNI->def.getDeadSlot())
  706       RU.push_back(std::make_pair(&RURange, RURange.find(LI.begin()->end)));
  712         SRs.push_back(std::make_pair(&SR, SR.find(LI.begin()->end)));
  721       if (RI->end.isBlock())
  723       MachineInstr *MI = getInstructionFromIndex(RI->end);
  740         I = RURange.advanceTo(I, RI->end);
  741         if (I == RURange.end() || I->start >= RI->end)
  768             I = SR.advanceTo(I, RI->end);
  769             if (I == SR.end() || I->start >= RI->end)
  800           if (N != LI.end() && N->start == RI->end)
  914     while (*SlotI < LiveI->end) {
 1058       if (SlotIndex::isEarlierEqualInstr(NewIdx, OldIdxIn->end))
 1063       if (MachineInstr *KillMI = LIS.getInstructionFromIndex(OldIdxIn->end))
 1080           Prev->end = NewIdx.getRegSlot();
 1083         OldIdxIn->end = Next->start;
 1089       bool isKill = SlotIndex::isSameInstr(OldIdx, OldIdxIn->end);
 1090       OldIdxIn->end = NewIdx.getRegSlot(OldIdxIn->end.isEarlyClobber());
 1090       OldIdxIn->end = NewIdx.getRegSlot(OldIdxIn->end.isEarlyClobber());
 1113     if (SlotIndex::isEarlierInstr(NewIdxDef, OldIdxOut->end)) {
 1125     bool OldIdxDefIsDead = OldIdxOut->end.isDead();
 1127         SlotIndex::isEarlierInstr(OldIdxOut->end, NewIdxDef)) {
 1131           !SlotIndex::isEarlierInstr(std::prev(OldIdxOut)->end,
 1137         IPrev->end = OldIdxOut->end;
 1137         IPrev->end = OldIdxOut->end;
 1147         INext->start = OldIdxOut->end;
 1164         Prev->end = NewIdxDef;
 1177           *NewSegment = LiveRange::Segment(NewIdxDef, Prev->end, Prev->valno);
 1233       bool isKill = SlotIndex::isSameInstr(OldIdx, OldIdxIn->end);
 1241                    NewIdx.getRegSlot(OldIdxIn->end.isEarlyClobber()));
 1242       OldIdxIn->end = findLastUseBefore(DefBeforeOldIdx, Reg, LaneMask);
 1259     bool OldIdxDefIsDead = OldIdxOut->end.isDead();
 1291           SlotIndex NewDefEndPoint = std::next(NewIdxIn)->end;
 1294               SlotIndex::isEarlierInstr(NewIdx, Prev->end)) {
 1307           *OldIdxOut = LiveRange::Segment(OldIdxIn->start, OldIdxOut->end,
 1335           if (OldIdxIn != E && SlotIndex::isEarlierInstr(NewIdx, OldIdxIn->end))
 1336             OldIdxIn->end = NewIdx.getRegSlot();
 1340           && SlotIndex::isEarlierInstr(NewIdx, NewIdxOut->end)) {
 1356             NewIdxDef.getRegSlot(), (NewIdxOut + 1)->end, OldIdxVNI);
 1494     lastUseIdx = LII->end;
 1506     bool isEndValid = getInstructionFromIndex(LII->end);
 1524           if (LII->end.isDead()) {
 1566         if (!isEndValid && !LII->end.isBlock())
 1567           LII->end = instrIdx.getRegSlot();
lib/CodeGen/LiveRangeCalc.cpp
  317       if (Seg.end > Begin) {
  322         if (LR.isUndefIn(Undefs, Seg.end, End))
lib/CodeGen/MachineScheduler.cpp
 1741     if (SlotIndex::isSameInstr(std::prev(GlobalSegment)->end,
lib/CodeGen/MachineVerifier.cpp
 2492     LiveInts->getMBBFromIndex(S.end.getPrevSlot());
 2501   if (S.end == LiveInts->getMBBEndIdx(EndMBB))
 2506       S.start == VNI->def && S.end == VNI->def.getDeadSlot())
 2511     LiveInts->getInstructionFromIndex(S.end.getPrevSlot());
 2520   if (S.end.isBlock()) {
 2526   if (S.end.isDead()) {
 2529     if (!SlotIndex::isSameInstr(S.start, S.end)) {
 2538   if (S.end.isEarlyClobber()) {
 2539     if (I+1 == LR.end() || (I+1)->start != S.end) {
 2577     if (S.end.isDead()) {
lib/CodeGen/RegAllocGreedy.cpp
 2217         if (Uses[Gap+1].getBaseIndex() >= I->end)
lib/CodeGen/RegAllocPBQP.cpp
  265     return std::get<0>(I)->segments[std::get<1>(I)].end;
lib/CodeGen/RegisterCoalescer.cpp
  614     LIS->getInstructionFromIndex(ValS->end.getPrevSlot());
  625   SlotIndex FillerStart = ValS->end, FillerEnd = BS->start;
  645     if (SS != S.end() && SlotIndex::isSameInstr(SS->start, SS->end)) {
  669   bool RecomputeLiveRange = AS->end == CopyIdx;
  673       if (SS != S.end() && SS->end == CopyIdx) {
  700     for (; BI != IntB.end() && ASeg.end >= BI->start; ++BI) {
  703       if (BI->start <= ASeg.start && BI->end > ASeg.start)
  705       if (BI->start > ASeg.start && BI->start < ASeg.end)
  728     LiveRange::Segment Added = LiveRange::Segment(S.start, S.end, DstValNo);
  730     if (Merged.end.isDead())
 1550   if (VNInfo *V = DstLI.getVNInfoAt(Seg->end)) {
 2796     SlotIndex End = OtherI->end;
 3144         NewEnd = I->end;
 3165             LE = LE.isValid() ? std::max(LE, I->end) : I->end;
 3165             LE = LE.isValid() ? std::max(LE, I->end) : I->end;
 3177             std::prev(S)->end = NewEnd;
lib/CodeGen/RegisterPressure.cpp
 1260         return S != nullptr && S->end == Pos.getRegSlot();
 1272                S->end != Pos.getDeadSlot();
lib/CodeGen/SplitKit.cpp
  241       if (LVI->end < Stop)
  264       while (LVI->end < Stop) {
  265         SlotIndex LastStop = LVI->end;
  302     if (LVI->end == Stop && ++LVI == LVE)
  351   return I != Orig.begin() && (--I)->end == Idx;
 1133       SlotIndex End = S.end;
 1219     } while (Start != S.end);
 1234   if (Seg->end != Def.getDeadSlot())
 1413       if (S.end != S.valno->def.getDeadSlot())
lib/CodeGen/TwoAddressInstructionPass.cpp
  262     KillMI = LIS->getInstructionFromIndex(I->end);
  446     return !I->end.isBlock() && SlotIndex::isSameInstr(I->end, useIdx);
  446     return !I->end.isBlock() && SlotIndex::isSameInstr(I->end, useIdx);
  882     KillMI = LIS->getInstructionFromIndex(I->end);
 1072     KillMI = LIS->getInstructionFromIndex(I->end);
 1648       if (I->end == UseIdx)
lib/CodeGen/VirtRegMap.cpp
  281     if (!Last.isValid() || SR.segments.back().end > Last)
  282       Last = SR.segments.back().end;
  296       while (SRI != SR->end() && SRI->end <= MBBBegin)
  334         for (; I != Indexes->MBBIndexEnd() && I->first < Seg.end; ++I) {
lib/Target/AMDGPU/SIWholeQuadMode.cpp
  604       SlotIndex Next = S->end.getNextIndex().getBaseIndex();
lib/Target/Hexagon/HexagonExpandCondsets.cpp
  335     if (!I->end.isRegister())
  348         LiveRange::iterator F = S.find(I->end);
  349         return F != S.end() && I->end == F->end;
  349         return F != S.end() && I->end == F->end;
  355           KillAt(I->end, S.LaneMask);
  361       KillAt(I->end, MRI->getMaxLaneMaskForVReg(Reg));
  475       if (P.second && Seg.end.isDead()) {
 1115     if (!LR.end.isRegister() && !LR.end.isDead())
 1115     if (!LR.end.isRegister() && !LR.end.isDead())
 1172     L1.addSegment(LiveRange::Segment(I->start, I->end, NewVN));
lib/Target/Hexagon/HexagonRegisterInfo.cpp
  256     for (SlotIndex I = S.start.getBaseIndex(), E = S.end.getBaseIndex();
lib/Target/PowerPC/PPCVSXFMAMutate.cpp
  309           NewFMAInt.addSegment(LiveInterval::Segment(AI->start, AI->end,