diff --git a/mlir/lib/Transforms/Utils/DialectConversion.cpp b/mlir/lib/Transforms/Utils/DialectConversion.cpp --- a/mlir/lib/Transforms/Utils/DialectConversion.cpp +++ b/mlir/lib/Transforms/Utils/DialectConversion.cpp @@ -1484,7 +1484,8 @@ auto stateHasOp = [op](const auto &it) { return it.getOperation() == op; }; auto &rootUpdates = impl->rootUpdates; auto it = llvm::find_if(llvm::reverse(rootUpdates), stateHasOp); - rootUpdates.erase(rootUpdates.begin() + (rootUpdates.rend() - it)); + assert(it != rootUpdates.rend() && "no root update started on op"); + rootUpdates.erase(it.base()); } /// PatternRewriter hook for notifying match failure reasons. @@ -2049,7 +2050,7 @@ orderedPatternList = anyOpLegalizerPatterns; // If the pattern is not found, then it was removed and cannot be matched. - auto it = llvm::find(orderedPatternList, &pattern); + auto *it = llvm::find(orderedPatternList, &pattern); if (it == orderedPatternList.end()) return PatternBenefit::impossibleToMatch();