From adf4b739eac40feee28bd6fcd89ebafa0f2247e1 Mon Sep 17 00:00:00 2001 From: Silviu Baranga Date: Tue, 10 May 2016 12:28:49 +0000 Subject: [PATCH] [LAA] Use re-written SCEV expressions when computing distances This removes a redundant stride versioning step (we already do it in getPtrStride, so it has no effect) and uses PSE to get the SCEV expressions for the source and destination (this might have changed when getPtrStride was called). I discovered this through code inspection, and couldn't produce a regression test for it. llvm-svn: 269052 --- llvm/lib/Analysis/LoopAccessAnalysis.cpp | 9 ++------- 1 file changed, 2 insertions(+), 7 deletions(-) diff --git a/llvm/lib/Analysis/LoopAccessAnalysis.cpp b/llvm/lib/Analysis/LoopAccessAnalysis.cpp index 630ff7639b54..173b03178b55 100644 --- a/llvm/lib/Analysis/LoopAccessAnalysis.cpp +++ b/llvm/lib/Analysis/LoopAccessAnalysis.cpp @@ -1158,20 +1158,15 @@ MemoryDepChecker::isDependent(const MemAccessInfo &A, unsigned AIdx, BPtr->getType()->getPointerAddressSpace()) return Dependence::Unknown; - const SCEV *AScev = replaceSymbolicStrideSCEV(PSE, Strides, APtr); - const SCEV *BScev = replaceSymbolicStrideSCEV(PSE, Strides, BPtr); - int StrideAPtr = getPtrStride(PSE, APtr, InnermostLoop, Strides, true); int StrideBPtr = getPtrStride(PSE, BPtr, InnermostLoop, Strides, true); - const SCEV *Src = AScev; - const SCEV *Sink = BScev; + const SCEV *Src = PSE.getSCEV(APtr); + const SCEV *Sink = PSE.getSCEV(BPtr); // If the induction step is negative we have to invert source and sink of the // dependence. if (StrideAPtr < 0) { - //Src = BScev; - //Sink = AScev; std::swap(APtr, BPtr); std::swap(Src, Sink); std::swap(AIsWrite, BIsWrite);