diff --git a/mlir/lib/IR/AffineMap.cpp b/mlir/lib/IR/AffineMap.cpp index 72effb38d614c..2838843e2eba6 100644 --- a/mlir/lib/IR/AffineMap.cpp +++ b/mlir/lib/IR/AffineMap.cpp @@ -580,15 +580,13 @@ AffineMap AffineMap::compose(AffineMap map) const { SmallVector AffineMap::compose(ArrayRef values) const { assert(getNumSymbols() == 0 && "Expected symbol-less map"); SmallVector exprs; - exprs.reserve(values.size()); MLIRContext *ctx = getContext(); - for (auto v : values) - exprs.push_back(getAffineConstantExpr(v, ctx)); - auto resMap = compose(AffineMap::get(0, 0, exprs, ctx)); + for (int64_t value : values) + exprs.push_back(getAffineConstantExpr(value, ctx)); SmallVector res; - res.reserve(resMap.getNumResults()); - for (auto e : resMap.getResults()) - res.push_back(cast(e).getValue()); + res.reserve(getNumResults()); + for (auto e : getResults()) + res.push_back(cast(e.replaceDims(exprs)).getValue()); return res; }