struct
#include <netlist/ProceduralAnalysis.hpp>
ProceduralAnalysis
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