CIRCT  20.0.0git
Classes | Public Member Functions | Protected Attributes | Private Types | List of all members
circt::SymbolCache Class Reference

Default symbol cache implementation; stores associations between names (StringAttr's) to mlir::Operation's. More...

#include <SymCache.h>

Inheritance diagram for circt::SymbolCache:
Inheritance graph
[legend]
Collaboration diagram for circt::SymbolCache:
Collaboration graph
[legend]

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...
 

Detailed Description

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.

Member Typedef Documentation

◆ Iterator

using circt::SymbolCache::Iterator = decltype(symbolCache)::iterator
private

Iterator support: A simple mapping between decltype(symbolCache)::iterator to SymbolCacheBase::Iterator.

Definition at line 109 of file SymCache.h.

Member Function Documentation

◆ addDefinition()

void circt::SymbolCache::addDefinition ( mlir::Attribute  key,
mlir::Operation *  op 
)
inlineoverridevirtual

In the building phase, add symbols.

Implements circt::SymbolCacheBase.

Definition at line 88 of file SymCache.h.

References symbolCache.

◆ begin()

SymbolCacheBase::Iterator circt::SymbolCache::begin ( )
inlineoverridevirtual

Implements circt::SymbolCacheBase.

Definition at line 121 of file SymCache.h.

References symbolCache.

◆ end()

SymbolCacheBase::Iterator circt::SymbolCache::end ( )
inlineoverridevirtual

Implements circt::SymbolCacheBase.

Definition at line 125 of file SymCache.h.

References symbolCache.

◆ getDefinition() [1/3]

mlir::Operation* circt::SymbolCache::getDefinition ( mlir::Attribute  symbol) const
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().

◆ getDefinition() [2/3]

virtual mlir::Operation* circt::SymbolCacheBase::getDefinition

Lookup a definition for 'symbol' in the cache.

◆ getDefinition() [3/3]

mlir::Operation* circt::SymbolCacheBase::getDefinition
inline

Lookup a definition for 'symbol' in the cache.

Definition at line 45 of file SymCache.h.

Member Data Documentation

◆ symbolCache

llvm::DenseMap<mlir::Attribute, mlir::Operation *> circt::SymbolCache::symbolCache
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().


The documentation for this class was generated from the following file: