diff --git a/mlir/lib/Dialect/SparseTensor/IR/SparseTensorDialect.cpp b/mlir/lib/Dialect/SparseTensor/IR/SparseTensorDialect.cpp index 32e1dcbc2cce2..9854cfcc279b5 100644 --- a/mlir/lib/Dialect/SparseTensor/IR/SparseTensorDialect.cpp +++ b/mlir/lib/Dialect/SparseTensor/IR/SparseTensorDialect.cpp @@ -1142,16 +1142,18 @@ bool mlir::sparse_tensor::isBlockSparsity(AffineMap dimToLvl) { auto pos = dimOp.getPosition(); if (binOp.getKind() == AffineExprKind::FloorDiv) { // Expect only one floordiv for each dimension. - if (coeffientMap.find(pos) != coeffientMap.end()) + auto [it, inserted] = coeffientMap.try_emplace(pos); + if (!inserted) return false; // Record coefficient of the floordiv. - coeffientMap[pos] = conOp.getValue(); + it->second = conOp.getValue(); } else if (binOp.getKind() == AffineExprKind::Mod) { // Expect floordiv before mod. - if (coeffientMap.find(pos) == coeffientMap.end()) + auto it = coeffientMap.find(pos); + if (it == coeffientMap.end()) return false; // Expect mod to have the same coefficient as floordiv. - if (conOp.getValue() != coeffientMap[pos]) + if (conOp.getValue() != it->second) return false; hasBlock = true; } else {