[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