Lines Matching full:later
335 /// isOverwrite - Return 'OverwriteComplete' if a store to the 'Later' location
338 /// overwritten by 'Later', or 'OverwriteUnknown' if nothing can be determined
339 static OverwriteResult isOverwrite(const AliasAnalysis::Location &Later,
345 const Value *P2 = Later.Ptr->stripPointerCasts();
348 // the later store was larger than the earlier store.
352 if (Later.Size == AliasAnalysis::UnknownSize ||
358 Later.Ptr->getType() == Earlier.Ptr->getType())
364 // Make sure that the Later size is >= the Earlier size.
365 if (Later.Size >= Earlier.Size)
369 // Otherwise, we have to have size information, and the later store has to be
371 if (Later.Size == AliasAnalysis::UnknownSize ||
376 // Check to see if the later store is to the entire object (either a global,
389 // If the "Later" store is to a recognizable object, get its size.
392 if (ObjectSize == Later.Size && ObjectSize >= Earlier.Size)
407 // The later store completely overlaps the earlier store if:
409 // 1. Both start at the same offset and the later one's size is greater than
413 // |-- later --|
415 // 2. The earlier store has an offset greater than the later offset, but which
416 // still lies completely within the later store.
419 // |----- later ------|
423 Later.Size >= Earlier.Size &&
424 uint64_t(EarlierOff - LaterOff) + Earlier.Size <= Later.Size)
427 // The other interesting case is if the later store overwrites the end of
431 // |-- later --|
434 // writes to addresses which will definitely be overwritten later
437 int64_t(LaterOff + Later.Size) >= int64_t(EarlierOff + Earlier.Size))