Home | History | Annotate | Download | only in Scalar

Lines Matching refs:Range

129 /// Represents a range of memset'd bytes with the ByteVal value.
136 /// the first store, we make a range [1, 2). The second store extends the range
137 /// to [0, 2). The third makes a new range [2, 3). The fourth store joins the
141 // Start/End - A semi range that describes the span that this range covers.
142 // The range is closed at the start and open at the end: [Start, End).
146 /// range.
152 /// TheStores - The actual stores that make up this range.
244 /// new range for the specified store at the specified offset, merging into
255 // to insert a new range. Handle this now.
274 // Now we know that Start <= I->End and End >= I->Start so the range overlaps
275 // but is not entirely contained within the range.
277 // See if the range extends the start of the range. In this case, it couldn't
278 // possibly cause it to join the prior range, because otherwise we would have
293 // Merge the range in.
442 for (const MemsetRange &Range : Ranges) {
444 if (Range.TheStores.size() == 1) continue;
446 // If it is profitable to lower this range to memset, do so now.
447 if (!Range.isProfitableToUseMemset(DL))
452 StartPtr = Range.StartPtr;
455 unsigned Alignment = Range.Alignment;
463 Builder.CreateMemSet(StartPtr, ByteVal, Range.End-Range.Start, Alignment);
466 for (Instruction *SI : Range.TheStores)
470 if (!Range.TheStores.empty())
471 AMemSet->setDebugLoc(Range.TheStores[0]->getDebugLoc());
474 for (Instruction *SI : Range.TheStores) {