Home | History | Annotate | Download | only in CodeGen

Lines Matching defs:End

66     if (I == segments().end()) {
100 if (I->end <= StartIdx)
102 if (I->end < Use)
108 /// by I to end at the specified endpoint. To do this, we should
112 assert(I != segments().end() && "Not a valid segment!");
118 for (; MergeTo != segments().end() && NewEnd >= MergeTo->end; ++MergeTo)
122 S->end = std::max(NewEnd, std::prev(MergeTo)->end);
126 if (MergeTo != segments().end() && MergeTo->start <= I->end &&
128 S->end = MergeTo->end;
140 assert(I != segments().end() && "Not a valid segment!");
158 if (MergeTo->end >= NewStart && MergeTo->valno == ValNo) {
159 segmentAt(MergeTo)->end = S->end;
165 MergeToSeg->end = S->end;
173 SlotIndex Start = S.start, End = S.end;
176 // If the inserted segment starts in the middle or right at the end of
181 if (B->start <= Start && B->end >= Start) {
182 extendSegmentEndTo(B, End);
188 assert(B->end <= Start &&
196 if (I != segments().end()) {
198 if (I->start <= End) {
203 if (End > I->end)
204 extendSegmentEndTo(I, End);
210 assert(I->start >= End &&
252 return std::upper_bound(LR->begin(), LR->end(), S.start);
276 LR->segmentSet->insert(LR->segmentSet->end(), S);
285 if (Pos < (*PrevI).end)
292 if (I != LR->segmentSet->end() && !(S.start < *I))
308 return end();
313 if (Pos < I[Mid].end)
352 const_iterator ie = end();
354 const_iterator je = other.end();
357 StartPos != other.end() && "Bogus start position hint!");
364 if (StartPos != other.end() && StartPos->start <= i->start) {
365 assert(StartPos < other.end() && i < end());
381 if (i->end > j->start)
397 const_iterator IE = end();
401 const_iterator JE = Other.end();
407 assert(J->end >= I->start);
409 if (J->start < I->end) {
418 if (J->end > I->end) {
422 // Advance J until J->end >= I->start.
426 while (J->end < I->start);
431 /// by [Start, End).
432 bool LiveRange::overlaps(SlotIndex Start, SlotIndex End) const {
433 assert(Start < End && "Invalid range");
434 const_iterator I = std::lower_bound(begin(), end(), End);
435 return I != begin() && (--I)->end > Start;
445 if (I == end() || I->start > O.start)
448 // Check adjacent live segments and see if we can get behind O.end.
449 while (I->end < O.end) {
453 if (I == end() || Last->end != I->start)
496 return end();
504 assert(segments.empty() || segments.back().end <= S.start);
521 void LiveRange::removeSegment(SlotIndex Start, SlotIndex End,
525 assert(I != end() && "Segment is not in range!");
526 assert(I->containsInterval(Start, End)
532 if (I->end == End) {
536 for (const_iterator II = begin(), EE = end(); II != EE; ++II)
549 I->start = End;
553 // Otherwise if the span we are removing is at the end of the Segment,
555 if (I->end == End) {
556 I->end = Start;
561 SlotIndex OldEnd = I->end;
562 I->end = Start; // Trim the old segment.
565 segments.insert(std::next(I), Segment(End, OldEnd, ValNo));
572 segments.erase(std::remove_if(begin(), end(), [ValNo](const Segment &S) {
574 }), end());
605 for (iterator I = std::next(OutIt), E = end(); I != E; ++I) {
612 if (OutIt->valno == nextValNo && OutIt->end == I->start) {
613 OutIt->end = I->end;
620 OutIt->end = I->end;
624 // If we merge some segments, chop off the end.
626 segments.erase(OutIt, end());
666 Updater.add(S.start, S.end, LHSValNo);
680 Updater.add(S.start, S.end, LHSValNo);
702 for (iterator I = begin(); I != end(); ) {
710 if (Prev->valno == V2 && Prev->end == S->start) {
711 Prev->end = S->end;
727 if (I != end()) {
728 if (I->start == S->end && I->valno == V2) {
729 S->end = I->end;
747 segments.append(segmentSet->begin(), segmentSet->end());
790 // We start the search at the end of MBB.
795 assert(I != LR.end());
822 for (LiveRange::iterator I = LI.begin(), E = LI.end(); I != E; ++I) {
841 if (PrevValNo == S.valno && OutIt->end == S.start) {
842 OutIt->end = S.end;
855 // If we merged some segments chop off the end.
857 LI.segments.erase(OutIt, LI.end());
884 if (!Last.isValid() || SR.segments.back().end > Last)
885 Last = SR.segments.back().end;
905 // Find the next begin or end of a subrange segment. Combine masks if we
913 while (I != SR.end() &&
914 (I->end < Pos ||
915 (I->end == Pos && (ActiveMask & SR.LaneMask) == 0)))
917 if (I == SR.end())
933 Pos <= I->end && I->end <= NextPos) {
935 if (I->end == NextPos && Event == END_SEGMENT)
939 NextPos = I->end;
950 CurrentSegment.end = Pos;
983 if (!empty() && segments.back().end == Pos &&
996 CurrentSegment.end = Pos;
1001 // We reached the end of the last subranges and can stop.
1020 Sum += S.start.distance(S.end);
1025 return os << '[' << S.start << ',' << S.end << ':' << S.valno->id << ")";
1085 for (const_iterator I = begin(), E = end(); I != E; ++I) {
1087 assert(I->end.isValid());
1088 assert(I->start < I->end);
1093 assert(I->end <= std::next(I)->start);
1094 if (I->end == std::next(I)->start)
1135 // 2. [ReadI; end) at the back of LR.
1138 // - LR.begin() <= WriteI <= ReadI <= LR.end().
1169 for (const auto &S : make_range(ReadI, LR->end()))
1183 if (A.end == B.start)
1185 if (A.end < B.start)
1214 LiveRange::iterator E = LR->end();
1215 if (ReadI != E && ReadI->end <= Seg.start) {
1223 while (ReadI != E && ReadI->end <= Seg.start)
1227 assert(ReadI == E || ReadI->end > Seg.start);
1233 if (ReadI->end >= Seg.end)
1242 Seg.end = std::max(Seg.end, ReadI->end);
1249 Seg.end = std::max(Spills.back().end, Seg.end);
1255 WriteI[-1].end = std::max(WriteI[-1].end, Seg.end);
1268 WriteI = ReadI = LR->end();
1281 LiveRange::iterator SpillSrc = Spills.end();
1294 assert(NumMoved == size_t(Spills.end() - SpillSrc));
1295 Spills.erase(SpillSrc, Spills.end());
1403 LiveInterval::iterator J = LI.begin(), E = LI.end();