Index: llvm/lib/Transforms/Utils/VNCoercion.cpp =================================================================== --- llvm/lib/Transforms/Utils/VNCoercion.cpp +++ llvm/lib/Transforms/Utils/VNCoercion.cpp @@ -204,15 +204,6 @@ uint64_t StoreSize = WriteSizeInBits / 8; // Convert to bytes. LoadSize /= 8; - bool isAAFailure = false; - if (StoreOffset < LoadOffset) - isAAFailure = StoreOffset + int64_t(StoreSize) <= LoadOffset; - else - isAAFailure = LoadOffset + int64_t(LoadSize) <= StoreOffset; - - if (isAAFailure) - return -1; - // If the Load isn't completely contained within the stored bits, we don't // have all the bits to feed it. We could do something crazy in the future // (issue a smaller load then merge the bits in) but this seems unlikely to be @@ -221,6 +212,10 @@ StoreOffset + StoreSize < LoadOffset + LoadSize) return -1; + // The if statement above ensures StoreOffset <= LoadOffset + if (StoreOffset + int64_t(StoreSize) <= LoadOffset) + return -1; + // Okay, we can do this transformation. Return the number of bytes into the // store that the load is. return LoadOffset - StoreOffset;