9 #ifndef MLIR_IR_SYMBOLTABLE_H 10 #define MLIR_IR_SYMBOLTABLE_H 13 #include "llvm/ADT/StringMap.h" 31 template <
typename T> T
lookup(StringRef name)
const {
32 return dyn_cast_or_null<T>(
lookup(name));
68 : owner(op), symbolRef(symbolRef) {}
87 UseRange(std::vector<SymbolUse> &&uses) : uses(std::move(uses)) {}
89 using iterator = std::vector<SymbolUse>::const_iterator;
94 std::vector<SymbolUse> uses;
140 llvm::StringMap<Operation *> symbolTable;
143 unsigned uniquingCounter = 0;
163 template <
typename ConcreteType>
177 return dyn_cast_or_null<T>(lookupSymbol(name));
184 template <
typename ConcreteType>
193 return this->getOperation()
194 ->template getAttrOfType<StringAttr>(
201 this->getOperation()->setAttr(
210 return ::mlir::SymbolTable::getSymbolUses(getName(), from);
217 return ::mlir::SymbolTable::symbolKnownUseEmpty(getName(), from);
225 return ::mlir::SymbolTable::replaceAllSymbolUses(getName(), newSymbol,
233 #endif // MLIR_IR_SYMBOLTABLE_H Definition: Attributes.h:456
Definition: InferTypeOpInterface.cpp:20
static StringRef getSymbolAttrName()
Return the name of the attribute used for symbol names.
Definition: SymbolTable.h:44
Operation * getUser() const
Return the operation user of this symbol reference.
Definition: SymbolTable.h:71
SymbolUse(Operation *op, SymbolRefAttr symbolRef)
Definition: SymbolTable.h:67
Definition: Operation.h:27
static LogicalResult verifyTrait(Operation *op)
Definition: SymbolTable.h:187
static Optional< UseRange > getSymbolUses(Operation *from)
Definition: SymbolTable.cpp:303
T lookup(StringRef name) const
Definition: SymbolTable.h:31
LogicalResult verifySymbol(Operation *op)
Definition: SymbolTable.cpp:172
void setName(StringRef name)
Set the name of this symbol.
Definition: SymbolTable.h:200
Definition: SymbolTable.h:185
static LogicalResult verifyTrait(Operation *op)
Definition: SymbolTable.h:166
void erase(Operation *symbol)
Erase the given symbol from the table.
Definition: SymbolTable.cpp:53
This class implements a range of SymbolRef uses.
Definition: SymbolTable.h:85
Operation * lookupSymbol(StringRef name)
Definition: SymbolTable.h:173
void insert(Operation *symbol, Block::iterator insertPt={})
Definition: SymbolTable.cpp:69
Definition: LogicalResult.h:18
OpListType::iterator iterator
Definition: Block.h:107
Operation * getOp() const
Returns the associated operation.
Definition: SymbolTable.h:47
UseRange(std::vector< SymbolUse > &&uses)
Definition: SymbolTable.h:87
LogicalResult verifySymbolTable(Operation *op)
Definition: SymbolTable.cpp:142
Definition: SymbolTable.h:164
SymbolRefAttr getSymbolRef() const
Return the symbol reference that this use represents.
Definition: SymbolTable.h:74
static Operation * lookupNearestSymbolFrom(Operation *from, StringRef symbol)
Definition: SymbolTable.cpp:125
Definition: OpDefinition.h:386
static bool symbolKnownUseEmpty(StringRef symbol, Operation *from)
Definition: SymbolTable.cpp:340
Operation * lookup(StringRef name) const
Definition: SymbolTable.cpp:48
StringRef getName()
Returns the name of this symbol.
Definition: SymbolTable.h:192
static Operation * lookupSymbolIn(Operation *op, StringRef symbol)
Definition: SymbolTable.cpp:106
SymbolTable(Operation *symbolTableOp)
Build a symbol table with the symbols within the given operation.
Definition: SymbolTable.cpp:25
Definition: SymbolTable.h:23
LLVM_NODISCARD LogicalResult replaceAllSymbolUses(StringRef newSymbol, Operation *from)
Definition: SymbolTable.h:223
iterator begin() const
Definition: SymbolTable.h:90
iterator end() const
Definition: SymbolTable.h:91
static StringAttr get(StringRef bytes, MLIRContext *context)
Get an instance of a StringAttr with the given string.
Definition: Attributes.cpp:334
This class represents a specific symbol use.
Definition: SymbolTable.h:65
std::vector< SymbolUse >::const_iterator iterator
Definition: SymbolTable.h:89
bool symbolKnownUseEmpty(Operation *from)
Definition: SymbolTable.h:216
Optional<::mlir::SymbolTable::UseRange > getSymbolUses(Operation *from)
Definition: SymbolTable.h:209
static LLVM_NODISCARD LogicalResult replaceAllSymbolUses(StringRef oldSymbol, StringRef newSymbol, Operation *from)
Definition: SymbolTable.cpp:406
T lookupSymbol(StringRef name)
Definition: SymbolTable.h:176