diff --git a/mlir/lib/Dialect/SparseTensor/Transforms/LoopEmitter.cpp b/mlir/lib/Dialect/SparseTensor/Transforms/LoopEmitter.cpp --- a/mlir/lib/Dialect/SparseTensor/Transforms/LoopEmitter.cpp +++ b/mlir/lib/Dialect/SparseTensor/Transforms/LoopEmitter.cpp @@ -528,7 +528,7 @@ makeLoopCondKind(isSparse, isSlice, isAffine, isUnRedu)); } - std::sort(spConds.begin(), spConds.end(), [](auto lhs, auto rhs) { + std::stable_sort(spConds.begin(), spConds.end(), [](auto lhs, auto rhs) { // AffineUnRed > Affine > Slice > Trivial return static_cast(lhs.second) > static_cast(rhs.second); });