aboutsummaryrefslogtreecommitdiff
path: root/llvm/lib
diff options
context:
space:
mode:
authorSebastian Pop <spop@codeaurora.org>2014-05-09 22:45:07 +0000
committerSebastian Pop <spop@codeaurora.org>2014-05-09 22:45:07 +0000
commit47fe7de1b517161d1c162ead1ec6e1143dd99372 (patch)
tree5cf80971f8edda453ab14ef46e7b238a6e1333a0 /llvm/lib
parent444621abe1951358fc5051b28e31bb2efdf5d61f (diff)
downloadllvm-47fe7de1b517161d1c162ead1ec6e1143dd99372.zip
llvm-47fe7de1b517161d1c162ead1ec6e1143dd99372.tar.gz
llvm-47fe7de1b517161d1c162ead1ec6e1143dd99372.tar.bz2
move findArrayDimensions to ScalarEvolution
we do not use the information from SCEVAddRecExpr to compute the shape of the array, so a better place for this function is in ScalarEvolution. llvm-svn: 208456
Diffstat (limited to 'llvm/lib')
-rw-r--r--llvm/lib/Analysis/DependenceAnalysis.cpp2
-rw-r--r--llvm/lib/Analysis/ScalarEvolution.cpp18
2 files changed, 10 insertions, 10 deletions
diff --git a/llvm/lib/Analysis/DependenceAnalysis.cpp b/llvm/lib/Analysis/DependenceAnalysis.cpp
index 96acda3..57231b8 100644
--- a/llvm/lib/Analysis/DependenceAnalysis.cpp
+++ b/llvm/lib/Analysis/DependenceAnalysis.cpp
@@ -3195,7 +3195,7 @@ DependenceAnalysis::tryDelinearize(const SCEV *SrcSCEV, const SCEV *DstSCEV,
// Second step: find subscript sizes.
SmallVector<const SCEV *, 4> Sizes;
- SrcAR->findArrayDimensions(*SE, Terms, Sizes);
+ SE->findArrayDimensions(Terms, Sizes);
// Third step: compute the access functions for each subscript.
SmallVector<const SCEV *, 4> SrcSubscripts, DstSubscripts;
diff --git a/llvm/lib/Analysis/ScalarEvolution.cpp b/llvm/lib/Analysis/ScalarEvolution.cpp
index b8a49f5..f065d85 100644
--- a/llvm/lib/Analysis/ScalarEvolution.cpp
+++ b/llvm/lib/Analysis/ScalarEvolution.cpp
@@ -7195,8 +7195,7 @@ findGCD(ScalarEvolution &SE, SmallVectorImpl<const SCEV *> &Terms) {
static void findArrayDimensionsRec(ScalarEvolution &SE,
SmallVectorImpl<const SCEV *> &Terms,
- SmallVectorImpl<const SCEV *> &Sizes,
- const SCEV *Zero, const SCEV *One) {
+ SmallVectorImpl<const SCEV *> &Sizes) {
// The GCD of all Terms is the dimension of the innermost dimension.
const SCEV *GCD = findGCD(SE, Terms);
@@ -7215,6 +7214,8 @@ static void findArrayDimensionsRec(ScalarEvolution &SE,
return;
}
+ const SCEV *Zero = SE.getConstant(GCD->getType(), 0);
+
for (unsigned I = 0; I < Terms.size(); ++I) {
// Normalize the terms before the next call to findArrayDimensionsRec.
const SCEV *Q, *R;
@@ -7230,7 +7231,7 @@ static void findArrayDimensionsRec(ScalarEvolution &SE,
Terms.end());
if (Terms.size() > 0)
- findArrayDimensionsRec(SE, Terms, Sizes, Zero, One);
+ findArrayDimensionsRec(SE, Terms, Sizes);
Sizes.push_back(GCD);
}
@@ -7283,8 +7284,8 @@ static inline int numberOfTerms(const SCEV *S) {
/// Second step of delinearization: compute the array dimensions Sizes from the
/// set of Terms extracted from the memory access function of this SCEVAddRec.
-void SCEVAddRecExpr::findArrayDimensions(
- ScalarEvolution &SE, SmallVectorImpl<const SCEV *> &Terms,
+void ScalarEvolution::findArrayDimensions(
+ SmallVectorImpl<const SCEV *> &Terms,
SmallVectorImpl<const SCEV *> &Sizes) const {
if (Terms.size() < 2)
@@ -7316,9 +7317,8 @@ void SCEVAddRecExpr::findArrayDimensions(
dbgs() << *T << "\n";
});
- const SCEV *Zero = SE.getConstant(this->getType(), 0);
- const SCEV *One = SE.getConstant(this->getType(), 1);
- findArrayDimensionsRec(SE, Terms, Sizes, Zero, One);
+ ScalarEvolution &SE = *const_cast<ScalarEvolution *>(this);
+ findArrayDimensionsRec(SE, Terms, Sizes);
DEBUG({
dbgs() << "Sizes:\n";
@@ -7436,7 +7436,7 @@ SCEVAddRecExpr::delinearize(ScalarEvolution &SE,
collectParametricTerms(SE, Terms);
// Second step: find subscript sizes.
- findArrayDimensions(SE, Terms, Sizes);
+ SE.findArrayDimensions(Terms, Sizes);
// Third step: compute the access functions for each subscript.
const SCEV *Remainder = computeAccessFunctions(SE, Subscripts, Sizes);