CIRCT
20.0.0git
|
Default symbol cache implementation; stores associations between names (StringAttr's) to mlir::Operation's. More...
#include <SymCache.h>
Classes | |
struct | SymbolCacheIteratorImpl |
Public Member Functions | |
void | addDefinition (mlir::Attribute key, mlir::Operation *op) override |
In the building phase, add symbols. More... | |
mlir::Operation * | getDefinition (mlir::Attribute attr) const override |
Lookup a definition for 'symbol' in the cache. More... | |
SymbolCacheBase::Iterator | begin () override |
SymbolCacheBase::Iterator | end () override |
virtual mlir::Operation * | getDefinition (mlir::Attribute symbol) const=0 |
Lookup a definition for 'symbol' in the cache. More... | |
mlir::Operation * | getDefinition (mlir::FlatSymbolRefAttr symbol) const |
Lookup a definition for 'symbol' in the cache. More... | |
Public Member Functions inherited from circt::SymbolCacheBase | |
virtual | ~SymbolCacheBase () |
Virtual method anchor. More... | |
void | addSymbol (mlir::SymbolOpInterface op) |
Adds the symbol-defining 'op' to the cache. More... | |
void | addDefinitions (mlir::Operation *top) |
Populate the symbol cache with all symbol-defining operations within the 'top' operation. More... | |
mlir::Operation * | getDefinition (mlir::FlatSymbolRefAttr symbol) const |
Lookup a definition for 'symbol' in the cache. More... | |
Protected Attributes | |
llvm::DenseMap< mlir::Attribute, mlir::Operation * > | symbolCache |
This stores a lookup table from symbol attribute to the operation that defines it. More... | |
Private Types | |
using | Iterator = decltype(symbolCache)::iterator |
Iterator support: A simple mapping between decltype(symbolCache)::iterator to SymbolCacheBase::Iterator. More... | |
Additional Inherited Members | |
Public Types inherited from circt::SymbolCacheBase | |
using | CacheItem = std::pair< mlir::Attribute, mlir::Operation * > |
Iterator support through a pointer to some abstract cache. More... | |
Default symbol cache implementation; stores associations between names (StringAttr's) to mlir::Operation's.
Adding/getting definitions from the symbol cache is not thread safe. If this is required, synchronizing cache acccess should be ensured by the caller.
Definition at line 85 of file SymCache.h.
|
private |
Iterator support: A simple mapping between decltype(symbolCache)::iterator to SymbolCacheBase::Iterator.
Definition at line 109 of file SymCache.h.
|
inlineoverridevirtual |
In the building phase, add symbols.
Implements circt::SymbolCacheBase.
Definition at line 88 of file SymCache.h.
References symbolCache.
|
inlineoverridevirtual |
Implements circt::SymbolCacheBase.
Definition at line 121 of file SymCache.h.
References symbolCache.
|
inlineoverridevirtual |
Implements circt::SymbolCacheBase.
Definition at line 125 of file SymCache.h.
References symbolCache.
|
inlineoverridevirtual |
Lookup a definition for 'symbol' in the cache.
Implements circt::SymbolCacheBase.
Definition at line 94 of file SymCache.h.
References symbolCache.
Referenced by circt::msft::getValueName(), and circt::ExportVerilog::lowerHWInstanceChoices().
virtual mlir::Operation* circt::SymbolCacheBase::getDefinition |
Lookup a definition for 'symbol' in the cache.
|
inline |
Lookup a definition for 'symbol' in the cache.
Definition at line 45 of file SymCache.h.
|
protected |
This stores a lookup table from symbol attribute to the operation that defines it.
Definition at line 104 of file SymCache.h.
Referenced by addDefinition(), begin(), end(), and getDefinition().