slang::netlist::ProceduralAnalysis struct

Public types

struct LValueSymbol

Public static functions

static auto unreachableState() -> AnalysisState
static auto topState() -> AnalysisState

Constructors, destructors, conversion operators

ProceduralAnalysis(const ast::Symbol& symbol, NetlistGraph& graph)

Public functions

auto saveLValueFlag() -> auto
auto findLsp(uint32_t index, std::pair<uint64_t, uint64_t> bounds) -> const ast::Expression*
Find the LSP for the symbol with the given index and bounds.
void handleRvalue(const ast::ValueSymbol& symbol, std::pair<uint32_t, uint32_t> bounds)
auto handleLvalue(const ast::ValueSymbol& symbol, const ast::Expression& lsp, std::pair<uint32_t, uint32_t> bounds) -> auto
void updateLspMap(uint32_t lvalueIndex, const ast::Expression& lsp, std::pair<uint32_t, uint32_t> bounds)
void noteReference(const ast::ValueSymbol& symbol, const ast::Expression& lsp)
template<typename T>
void handle(const T& expr)
template<typename T>
void handle(const T& expr)
void handle(const ast::AssignmentExpression& expr)
void handle(const ast::ConditionalStatement& stmt)
void handle(ast::CaseStatement const& stmt)
void joinState(AnalysisState& result, const AnalysisState& other)
void meetState(AnalysisState& result, const AnalysisState& other)
auto copyState(const AnalysisState& source) -> AnalysisState

Public variables

BumpAllocator allocator
SymbolBitMap::allocator_type bitMapAllocator
SymbolLSPMap::allocator_type lspMapAllocator
SmallMap<const ast::ValueSymbol*, uint32_t, 4> symbolToSlot
SmallVector<LValueSymbol> lvalues
SmallMap<const ast::ValueSymbol*, SymbolBitMap, 4> rvalues
ast::LSPVisitor<ProceduralAnalysis> lspVisitor
bool isLValue
NetlistGraph& graph