void AliasCheckGenerator::printConditions(const isl::Set &ParamContext, const isl::Set &Acc, const BoundsMapT &map) const { void *np = NULL; Set AccA = Acc; // Eliminate all but one single dimension and take the min/max. unsigned int ndims = AccA.dim(DimType::DTSet); AccA = AccA.eliminate(DimType::DTSet, 1, ndims - 1); PwAff minA = AccA.dimMin(0); PwAff maxA = AccA.dimMax(0); AstBuild Builder = AstBuild::fromContext(ParamContext); Space A = AccA.getSpace(); std::string nA = A.getTupleName(DimType::DTSet); Id idA = Id::alloc(nA, np); AstExpr ExpMinA = Builder.exprFromPwAff(minA); AstExpr ExpMaxA = Builder.exprFromPwAff(maxA); AstExpr ExpIdA = AstExpr::fromId(idA); ExpMinA = ExpIdA.add(ExpMinA); ExpMaxA = ExpIdA.add(ExpMaxA); for (const isl::Set &s : map) { Set AccB = s; Space B = AccB.getSpace(); std::string nB = B.getTupleName(DimType::DTSet); Id idB = Id::alloc(nB, np); PwAff minB = AccB.dimMin(0); PwAff maxB = AccB.dimMax(0); AstExpr ExpMinB = Builder.exprFromPwAff(minB); AstExpr ExpMaxB = Builder.exprFromPwAff(maxB); AstExpr ExpIdB = AstExpr::fromId(idB); ExpMinB = ExpIdB.add(ExpMinB); ExpMaxB = ExpIdB.add(ExpMaxB); dbgs().indent(6) << "[ (" << ExpMinA.toStr(Format::FC) << ")"; dbgs() << " <= (" << ExpMaxB.toStr(Format::FC) << ")"; dbgs() << " && (" << ExpMinB.toStr(Format::FC) << ")"; dbgs() << " <= (" << ExpMaxA.toStr(Format::FC) << ") ]\n"; } }