Author: lonely eagle Date: 2025-11-06T18:46:46+08:00 New Revision: a11869ccf13d99f3559a4b244dfe2c8593db783a
URL: https://github.com/llvm/llvm-project/commit/a11869ccf13d99f3559a4b244dfe2c8593db783a DIFF: https://github.com/llvm/llvm-project/commit/a11869ccf13d99f3559a4b244dfe2c8593db783a.diff LOG: Revert "[mlir] Make remove-dead-values pass remove blocks arguments first (#1…" This reverts commit a928c61961004cc94c4cb37bc4c414f1537e7660. Added: Modified: mlir/lib/Transforms/RemoveDeadValues.cpp mlir/test/Transforms/remove-dead-values.mlir Removed: ################################################################################ diff --git a/mlir/lib/Transforms/RemoveDeadValues.cpp b/mlir/lib/Transforms/RemoveDeadValues.cpp index 979b3965e4ba9..41f3f9d76a3b1 100644 --- a/mlir/lib/Transforms/RemoveDeadValues.cpp +++ b/mlir/lib/Transforms/RemoveDeadValues.cpp @@ -742,25 +742,7 @@ static void processBranchOp(BranchOpInterface branchOp, RunLivenessAnalysis &la, static void cleanUpDeadVals(RDVFinalCleanupList &list) { LDBG() << "Starting cleanup of dead values..."; - // 1. Blocks - LDBG() << "Cleaning up " << list.blocks.size() << " block argument lists"; - for (auto &b : list.blocks) { - // blocks that are accessed via multiple codepaths processed once - if (b.b->getNumArguments() != b.nonLiveArgs.size()) - continue; - LDBG() << "Erasing " << b.nonLiveArgs.count() - << " non-live arguments from block: " << b.b; - // it iterates backwards because erase invalidates all successor indexes - for (int i = b.nonLiveArgs.size() - 1; i >= 0; --i) { - if (!b.nonLiveArgs[i]) - continue; - LDBG() << " Erasing block argument " << i << ": " << b.b->getArgument(i); - b.b->getArgument(i).dropAllUses(); - b.b->eraseArgument(i); - } - } - - // 2. Operations + // 1. Operations LDBG() << "Cleaning up " << list.operations.size() << " operations"; for (auto &op : list.operations) { LDBG() << "Erasing operation: " @@ -769,14 +751,14 @@ static void cleanUpDeadVals(RDVFinalCleanupList &list) { op->erase(); } - // 3. Values + // 2. Values LDBG() << "Cleaning up " << list.values.size() << " values"; for (auto &v : list.values) { LDBG() << "Dropping all uses of value: " << v; v.dropAllUses(); } - // 4. Functions + // 3. Functions LDBG() << "Cleaning up " << list.functions.size() << " functions"; // Record which function arguments were erased so we can shrink call-site // argument segments for CallOpInterface operations (e.g. ops using @@ -798,7 +780,7 @@ static void cleanUpDeadVals(RDVFinalCleanupList &list) { (void)f.funcOp.eraseResults(f.nonLiveRets); } - // 5. Operands + // 4. Operands LDBG() << "Cleaning up " << list.operands.size() << " operand lists"; for (OperationToCleanup &o : list.operands) { // Handle call-specific cleanup only when we have a cached callee reference. @@ -840,7 +822,7 @@ static void cleanUpDeadVals(RDVFinalCleanupList &list) { } } - // 6. Results + // 5. Results LDBG() << "Cleaning up " << list.results.size() << " result lists"; for (auto &r : list.results) { LDBG() << "Erasing " << r.nonLive.count() @@ -849,6 +831,24 @@ static void cleanUpDeadVals(RDVFinalCleanupList &list) { dropUsesAndEraseResults(r.op, r.nonLive); } + // 6. Blocks + LDBG() << "Cleaning up " << list.blocks.size() << " block argument lists"; + for (auto &b : list.blocks) { + // blocks that are accessed via multiple codepaths processed once + if (b.b->getNumArguments() != b.nonLiveArgs.size()) + continue; + LDBG() << "Erasing " << b.nonLiveArgs.count() + << " non-live arguments from block: " << b.b; + // it iterates backwards because erase invalidates all successor indexes + for (int i = b.nonLiveArgs.size() - 1; i >= 0; --i) { + if (!b.nonLiveArgs[i]) + continue; + LDBG() << " Erasing block argument " << i << ": " << b.b->getArgument(i); + b.b->getArgument(i).dropAllUses(); + b.b->eraseArgument(i); + } + } + // 7. Successor Operands LDBG() << "Cleaning up " << list.successorOperands.size() << " successor operand lists"; diff --git a/mlir/test/Transforms/remove-dead-values.mlir b/mlir/test/Transforms/remove-dead-values.mlir index 8b5ccdcf204dd..e7304505c809e 100644 --- a/mlir/test/Transforms/remove-dead-values.mlir +++ b/mlir/test/Transforms/remove-dead-values.mlir @@ -674,18 +674,3 @@ func.func @dead_value_loop_ivs_no_result(%lb: index, %ub: index, %step: index, % } return } - -// ----- - -// CHECK-LABEL: func @op_block_have_dead_arg -func.func @op_block_have_dead_arg(%arg0: index, %arg1: index, %arg2: index, %arg3: i1) { - scf.for %iv = %arg0 to %arg1 step %arg2 { - scf.execute_region { - cf.cond_br %arg3, ^bb1(%arg0 : index), ^bb1(%arg1 : index) - ^bb1(%0: index): - scf.yield - } - } -// CHECK-NEXT: return - return -} _______________________________________________ llvm-branch-commits mailing list [email protected] https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-branch-commits
