[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