CIRCT 23.0.0git
Loading...
Searching...
No Matches
Classes | Namespaces | Typedefs | Functions
CaptureAnalysis.h File Reference
#include "circt/Support/LLVM.h"
#include "llvm/ADT/SetVector.h"
Include dependency graph for CaptureAnalysis.h:
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Classes

struct  circt::ImportVerilog::AmbiguousHierCapture
 A function whose hierarchical reference resolves to one symbol reachable through more than one instance. More...
 

Namespaces

namespace  slang
 
namespace  slang::ast
 
namespace  circt
 The InstanceGraph op interface, see InstanceGraphInterface.td for more details.
 
namespace  circt::ImportVerilog
 

Typedefs

using circt::ImportVerilog::CaptureMap = DenseMap< const slang::ast::SubroutineSymbol *, SmallSetVector< const slang::ast::ValueSymbol *, 4 > >
 The result of capture analysis: for each function, the set of non-local, non-global variable symbols that the function captures directly or transitively through calls.
 

Functions

bool circt::ImportVerilog::isCompileTimeConstant (slang::ast::SymbolKind kind)
 Return true if symbols of this kind are elaboration-time constants.
 
const slang::ast::InstanceSymbol * circt::ImportVerilog::getRootInstance (const slang::ast::HierarchicalReference &ref)
 Return the first instance on a hierarchical reference path, i.e.
 
CaptureMap circt::ImportVerilog::analyzeFunctionCaptures (const slang::ast::RootSymbol &root, SmallVectorImpl< AmbiguousHierCapture > &ambiguous)
 Analyze the AST rooted at root to determine which variables each function captures: symbols referenced inside the function's body (directly or through called functions) that are neither local nor global, including hierarchical references to other instances.