[Mlir-commits] [mlir] cff6565 - [mlir][spirv] Fix incorrect argument erasure in deserializer (#134610)
llvmlistbot at llvm.org
llvmlistbot at llvm.org
Mon Apr 7 07:00:38 PDT 2025
Author: Igor Wodiany
Date: 2025-04-07T15:00:33+01:00
New Revision: cff65657d9896cc04ca96907dd8e789403432a28
URL: https://github.com/llvm/llvm-project/commit/cff65657d9896cc04ca96907dd8e789403432a28
DIFF: https://github.com/llvm/llvm-project/commit/cff65657d9896cc04ca96907dd8e789403432a28.diff
LOG: [mlir][spirv] Fix incorrect argument erasure in deserializer (#134610)
The current implementation iterates and modifies the list of arguments
at the same time. Depending on the number of arguments this will trigger
an assert: `assert(index < arguments.size())`. This change replaces loop
with a range based erasure.
Added:
Modified:
mlir/lib/Target/SPIRV/Deserialization/Deserializer.cpp
Removed:
################################################################################
diff --git a/mlir/lib/Target/SPIRV/Deserialization/Deserializer.cpp b/mlir/lib/Target/SPIRV/Deserialization/Deserializer.cpp
index d471d9a8e3d6c..25749ec598f00 100644
--- a/mlir/lib/Target/SPIRV/Deserialization/Deserializer.cpp
+++ b/mlir/lib/Target/SPIRV/Deserialization/Deserializer.cpp
@@ -2077,8 +2077,7 @@ LogicalResult ControlFlowStructurizer::structurize() {
// block arguments from the original merge block.
for (unsigned i = 0, e = outsideUses.size(); i != e; ++i)
outsideUses[i].replaceAllUsesWith(selectionOp.getResult(i));
- for (unsigned i = 0, e = mergeBlock->getNumArguments(); i != e; ++i)
- mergeBlock->eraseArgument(i);
+ mergeBlock->eraseArguments(0, mergeBlock->getNumArguments());
}
// Check that whether some op in the to-be-erased blocks still has uses. Those
More information about the Mlir-commits
mailing list