diff --git a/mlir/lib/Dialect/SparseTensor/Transforms/SparseTensorConversion.cpp b/mlir/lib/Dialect/SparseTensor/Transforms/SparseTensorConversion.cpp --- a/mlir/lib/Dialect/SparseTensor/Transforms/SparseTensorConversion.cpp +++ b/mlir/lib/Dialect/SparseTensor/Transforms/SparseTensorConversion.cpp @@ -564,7 +564,7 @@ encSrc.getPointerBitWidth(), encSrc.getIndexBitWidth()); SmallVector sizes; SmallVector params; - sizesFromSrc(rewriter, sizes, loc, op.getSrc()); + sizesFromPtr(rewriter, sizes, loc, encSrc, srcTp, adaptor.getSrc()); newParams(rewriter, params, loc, srcTp, noPerm, Action::kToIterator, sizes, adaptor.getSrc()); Value iter = genNewCall(rewriter, loc, params); @@ -1174,7 +1174,8 @@ unsigned innerDim = srcType.getRank() - 1; if (AffineMap p = enc.getDimOrdering()) innerDim = p.getDimPosition(innerDim); - Value sz = rewriter.create(loc, op.getTensor(), innerDim); + auto sz = sizeFromPtrAtDim(rewriter, loc, enc, srcType, adaptor.getTensor(), + innerDim); // Allocate temporary buffers for values, filled-switch, and indices. // We do not use stack buffers for this, since the expanded size may // be rather large (as it envelops a single expanded dense dimension).