ScopInfo: Add isStrideX to unify stride checking
llvm-svn: 148810
diff --git a/polly/lib/CodeGeneration.cpp b/polly/lib/CodeGeneration.cpp
index d586a99..393b7e8 100644
--- a/polly/lib/CodeGeneration.cpp
+++ b/polly/lib/CodeGeneration.cpp
@@ -456,9 +456,9 @@
assert(scatteringDomain && "No scattering domain available");
- if (Access.isStrideZero(scatteringDomain))
+ if (Access.isStrideZero(isl_set_copy(scatteringDomain)))
newLoad = generateStrideZeroLoad(load, scalarMaps[0], vectorWidth);
- else if (Access.isStrideOne(scatteringDomain))
+ else if (Access.isStrideOne(isl_set_copy(scatteringDomain)))
newLoad = generateStrideOneLoad(load, scalarMaps[0], vectorWidth);
else
newLoad = generateUnknownStrideLoad(load, scalarMaps, vectorWidth);
@@ -515,7 +515,7 @@
const Value *pointer = store->getPointerOperand();
Value *vector = getOperand(store->getValueOperand(), BBMap, &vectorMap);
- if (Access.isStrideOne(scatteringDomain)) {
+ if (Access.isStrideOne(isl_set_copy(scatteringDomain))) {
Type *vectorPtrType = getVectorPtrTy(pointer, vectorWidth);
Value *newPointer = getOperand(pointer, BBMap, &vectorMap);
@@ -1259,7 +1259,8 @@
for (int i = 1; i < vectorWidth; i++)
IVS[i] = Builder.CreateAdd(IVS[i-1], StrideValue, "p_vector_iv");
- isl_set *scatteringDomain = isl_set_from_cloog_domain(f->domain);
+ isl_set *scatteringDomain =
+ isl_set_copy(isl_set_from_cloog_domain(f->domain));
// Add loop iv to symbols.
(*clastVars)[f->iterator] = LB;
@@ -1273,6 +1274,7 @@
}
// Loop is finished, so remove its iv from the live symbols.
+ isl_set_free(scatteringDomain);
clastVars->erase(f->iterator);
}