[Mlir-commits] [mlir] 4a93423 - [mlir] Use SymbolOpInterface to implement operateOnSymbol in test-symbol-uses pass (#172675)
llvmlistbot at llvm.org
llvmlistbot at llvm.org
Thu Dec 18 04:58:34 PST 2025
Author: lonely eagle
Date: 2025-12-18T20:58:30+08:00
New Revision: 4a9342392d5e36b1ab0a56f66b91f239d27f9f6a
URL: https://github.com/llvm/llvm-project/commit/4a9342392d5e36b1ab0a56f66b91f239d27f9f6a
DIFF: https://github.com/llvm/llvm-project/commit/4a9342392d5e36b1ab0a56f66b91f239d27f9f6a.diff
LOG: [mlir] Use SymbolOpInterface to implement operateOnSymbol in test-symbol-uses pass (#172675)
Fix https://github.com/llvm/llvm-project/issues/172603 by using
SymbolOpInterface to implement operateOnSymbol.
---------
Co-authored-by: Mehdi Amini <joker.eph at gmail.com>
Added:
Modified:
mlir/test/lib/IR/TestSymbolUses.cpp
Removed:
################################################################################
diff --git a/mlir/test/lib/IR/TestSymbolUses.cpp b/mlir/test/lib/IR/TestSymbolUses.cpp
index b470b15c533b5..e841e142c6563 100644
--- a/mlir/test/lib/IR/TestSymbolUses.cpp
+++ b/mlir/test/lib/IR/TestSymbolUses.cpp
@@ -23,7 +23,7 @@ struct SymbolUsesPass
StringRef getDescription() const final {
return "Test detection of symbol uses";
}
- WalkResult operateOnSymbol(Operation *symbol, ModuleOp module,
+ WalkResult operateOnSymbol(SymbolOpInterface symbol, ModuleOp module,
SmallVectorImpl<func::FuncOp> &deadFunctions) {
// Test computing uses on a non symboltable op.
std::optional<SymbolTable::UseRange> symbolUses =
@@ -42,7 +42,7 @@ struct SymbolUsesPass
// Test the functionality of symbolKnownUseEmpty.
if (SymbolTable::symbolKnownUseEmpty(symbol, &module.getBodyRegion())) {
- func::FuncOp funcSymbol = dyn_cast<func::FuncOp>(symbol);
+ func::FuncOp funcSymbol = dyn_cast<func::FuncOp>(symbol.getOperation());
if (funcSymbol && funcSymbol.isExternal())
deadFunctions.push_back(funcSymbol);
@@ -51,7 +51,7 @@ struct SymbolUsesPass
}
// Test the functionality of getSymbolUses.
- symbolUses = SymbolTable::getSymbolUses(symbol, &module.getBodyRegion());
+ symbolUses = symbol.getSymbolUses(module);
assert(symbolUses && "expected no unknown operations");
for (SymbolTable::SymbolUse symbolUse : *symbolUses) {
// Check that we can resolve back to our symbol.
@@ -59,7 +59,7 @@ struct SymbolUsesPass
symbolUse.getUser()->getParentOp(), symbolUse.getSymbolRef())) {
symbolUse.getUser()->emitRemark()
<< "found use of symbol : " << symbolUse.getSymbolRef() << " : "
- << *symbol->getInherentAttr(SymbolTable::getSymbolAttrName());
+ << symbol.getNameAttr();
}
}
symbol->emitRemark() << "symbol has " << llvm::size(*symbolUses) << " uses";
@@ -71,10 +71,8 @@ struct SymbolUsesPass
// Walk nested symbols.
SmallVector<func::FuncOp, 4> deadFunctions;
- module.getBodyRegion().walk([&](Operation *nestedOp) {
- if (isa<SymbolOpInterface>(nestedOp))
- return operateOnSymbol(nestedOp, module, deadFunctions);
- return WalkResult::advance();
+ module.getBodyRegion().walk([&](SymbolOpInterface nestedOp) {
+ return operateOnSymbol(nestedOp, module, deadFunctions);
});
SymbolTable table(module);
More information about the Mlir-commits
mailing list