diff options
Diffstat (limited to 'llvm/lib/Analysis/LoopAccessAnalysis.cpp')
-rw-r--r-- | llvm/lib/Analysis/LoopAccessAnalysis.cpp | 13 |
1 files changed, 6 insertions, 7 deletions
diff --git a/llvm/lib/Analysis/LoopAccessAnalysis.cpp b/llvm/lib/Analysis/LoopAccessAnalysis.cpp index f8f74157..f3a32d3 100644 --- a/llvm/lib/Analysis/LoopAccessAnalysis.cpp +++ b/llvm/lib/Analysis/LoopAccessAnalysis.cpp @@ -2085,6 +2085,12 @@ MemoryDepChecker::getDependenceDistanceStrideAndSize( if (!isa<SCEVConstant>(Dist)) FoundNonConstantDistanceDependence |= StrideAPtrInt == StrideBPtrInt; + // If distance is a SCEVCouldNotCompute, return Unknown immediately. + if (isa<SCEVCouldNotCompute>(Dist)) { + LLVM_DEBUG(dbgs() << "LAA: Uncomputable distance.\n"); + return Dependence::Unknown; + } + return DepDistanceStrideAndSizeInfo(Dist, MaxStride, CommonStride, TypeByteSize, AIsWrite, BIsWrite); } @@ -2122,13 +2128,6 @@ MemoryDepChecker::isDependent(const MemAccessInfo &A, unsigned AIdx, std::get<DepDistanceStrideAndSizeInfo>(Res); bool HasSameSize = TypeByteSize > 0; - if (isa<SCEVCouldNotCompute>(Dist)) { - if (CheckCompletelyBeforeOrAfter()) - return Dependence::NoDep; - LLVM_DEBUG(dbgs() << "LAA: Dependence because of uncomputable distance.\n"); - return Dependence::Unknown; - } - ScalarEvolution &SE = *PSE.getSE(); auto &DL = InnermostLoop->getHeader()->getDataLayout(); |