Lines Matching full:segments
93 if (I == segments().end()) { in createDeadDef()
116 segments().insert(I, Segment(Def, Def.getDeadSlot(), VNI)); in createDeadDef()
121 if (segments().empty()) in extendInBlock()
125 if (I == segments().begin()) in extendInBlock()
137 if (segments().empty()) in extendInBlock()
141 if (I == segments().begin()) in extendInBlock()
156 /// merge and eliminate all segments that this will overlap
159 assert(I != segments().end() && "Not a valid segment!"); in extendSegmentEndTo()
165 for (; MergeTo != segments().end() && NewEnd >= MergeTo->end; ++MergeTo) in extendSegmentEndTo()
172 // have the same value number, merge the two segments into one segment. in extendSegmentEndTo()
173 if (MergeTo != segments().end() && MergeTo->start <= I->end && in extendSegmentEndTo()
179 // Erase any dead segments. in extendSegmentEndTo()
180 segments().erase(std::next(I), MergeTo); in extendSegmentEndTo()
185 /// merge and eliminate all segments that this will overlap with.
187 assert(I != segments().end() && "Not a valid segment!"); in extendSegmentStartTo()
194 if (MergeTo == segments().begin()) { in extendSegmentStartTo()
196 segments().erase(MergeTo, I); in extendSegmentStartTo()
215 segments().erase(std::next(MergeTo), std::next(I)); in extendSegmentStartTo()
225 if (I != segments().begin()) { in addSegment()
233 // Check to make sure that we are not overlapping two live segments with in addSegment()
236 "Cannot overlap two segments with differing ValID's" in addSegment()
243 if (I != segments().end()) { in addSegment()
255 // Check to make sure that we are not overlapping two live segments with in addSegment()
258 "Cannot overlap two segments with differing ValID's"); in addSegment()
265 return segments().insert(I, S); in addSegment()
271 CollectionT &segments() { return impl().segmentsColl(); } in segments() function in __anona843c45e0111::CalcLiveRangeUtilBase
284 LiveRange::Segments>;
293 LiveRange::Segments &segmentsColl() { return LR->segments; } in segmentsColl()
295 void insertAtEnd(const Segment &S) { LR->segments.push_back(S); } in insertAtEnd()
484 for (const Segment &O : Other.segments) { in covers()
489 // Check adjacent live segments and see if we can get behind O.end. in covers()
519 for (const Segment &S : segments) { in RenumberValues()
545 assert(segments.empty() || segments.back().end <= S.start); in append()
546 segments.push_back(S); in append()
582 segments.erase(I); // Removed the whole Segment. in removeSegment()
603 segments.insert(std::next(I), Segment(End, OldEnd, ValNo)); in removeSegment()
608 I = segments.erase(I); in removeSegment()
619 /// removeValNo - Remove all the segments defined by the specified value#.
623 llvm::erase_if(segments, in removeValNo()
675 // If we merge some segments, chop off the end. in join()
677 segments.erase(OutIt, end()); in join()
682 // touching segments that now have identical values. That's OK since Other is in join()
684 for (Segment &S : Other.segments) in join()
703 // Okay, now insert the RHS live segments into the LHS. in join()
705 for (Segment &S : Other.segments) in join()
709 /// Merge all of the segments in RHS into this live range as the specified
710 /// value number. The segments in RHS are allowed to overlap with segments in
711 /// the current range, but only if the overlapping segments have the
716 for (const Segment &S : RHS.segments) in MergeSegmentsInAsValue()
720 /// MergeValueInAsValue - Merge all of the live segments of a specific val#
722 /// The segments in RHS are allowed to overlap with segments in the
724 /// segments with the specified value number.
729 for (const Segment &S : RHS.segments) in MergeValueInAsValue()
736 /// segments with the V1 value number with the V2 value number. This can
752 // Merge V1 segments into V2. in MergeValueNumberInto()
765 segments.erase(S); in MergeValueNumberInto()
775 // If we can merge it into later V2 segments, do so now. We ignore any in MergeValueNumberInto()
776 // following V1 segments, as they will be merged in subsequent iterations in MergeValueNumberInto()
781 segments.erase(I); in MergeValueNumberInto()
796 segments.empty() && in flushSegmentSet()
798 segments.append(segmentSet->begin(), segmentSet->end()); in flushSegmentSet()
815 // If there are no segments that end after the first slot, we're done. in isLiveAtIndexes()
960 for (const Segment &S : segments) in getSize()
1003 for (const Segment &S : segments) { in print()
1108 // Otherwise, segments are kept in three separate areas:
1115 // - Segments in all three areas are fully ordered and coalesced.
1116 // - Segments in area 1 precede and can't coalesce with segments in area 2.
1117 // - Segments in Spills precede and can't coalesce with segments in area 2.
1118 // - No coalescing is possible between segments in Spills and segments in area
1119 // 1, and there are no overlapping segments.
1121 // The segments in Spills are not ordered with respect to the segments in area
1159 assert(A.start <= B.start && "Unordered live segments."); in coalescable()
1183 assert(Spills.empty() && "Leftover spilled segments"); in add()
1244 LR->segments.push_back(Seg); in add()
1250 // Merge as many spilled segments as possible into the gap between WriteI
1285 LR->segments.erase(WriteI, ReadI); in flush()
1295 LR->segments.insert(ReadI, Spills.size() - GapSize, LiveRange::Segment()); in flush()
1300 LR->segments.erase(WriteI + Spills.size(), ReadI); in flush()