LLZK 0.1.0
Veridise's ZK Language IR
|
Builds a graph structure representing the relationships between symbols and their uses. More...
#include <SymbolUseGraph.h>
Public Types | |
using | roots_iterator = SymbolUseGraphNode::iterator |
Iterator over the root nodes (i.e., nodes that have no predecessors). | |
using | iterator = NodeIterator |
An iterator over the nodes of the graph. | |
Public Member Functions | |
SymbolUseGraph (mlir::SymbolOpInterface rootSymbolOp) | |
const SymbolUseGraphNode * | lookupNode (mlir::ModuleOp pathRoot, mlir::SymbolRefAttr path) const |
Return the existing node for the symbol reference relative to the given module, else nullptr. | |
const SymbolUseGraphNode * | lookupNode (mlir::SymbolOpInterface symbolDef) const |
Return the existing node for the symbol definition op, else nullptr. | |
size_t | size () const |
Return the total number of nodes in the graph. | |
roots_iterator | roots_begin () const |
roots_iterator | roots_end () const |
llvm::iterator_range< roots_iterator > | rootsIter () const |
Range over root nodes (i.e., nodes that have no predecessors). | |
iterator | begin () const |
iterator | end () const |
llvm::iterator_range< iterator > | nodesIter () const |
Range over all nodes in the graph. | |
void | dump () const |
Dump the graph in a human readable format. | |
void | print (llvm::raw_ostream &os) const |
void | dumpToDotFile (std::string filename="") const |
Dump the graph to file in dot graph format. | |
Friends | |
struct | llvm::GraphTraits< const llzk::SymbolUseGraph * > |
struct | llvm::GraphTraits< llvm::Inverse< const llzk::SymbolUseGraph * > > |
Builds a graph structure representing the relationships between symbols and their uses.
There is a node for each SymbolRef and the successors are the Symbols uses within this Symbol's defining Operation.
Definition at line 114 of file SymbolUseGraph.h.
using llzk::SymbolUseGraph::iterator = NodeIterator |
An iterator over the nodes of the graph.
Definition at line 184 of file SymbolUseGraph.h.
Iterator over the root nodes (i.e., nodes that have no predecessors).
Definition at line 174 of file SymbolUseGraph.h.
llzk::SymbolUseGraph::SymbolUseGraph | ( | mlir::SymbolOpInterface | rootSymbolOp | ) |
Definition at line 84 of file SymbolUseGraph.cpp.
|
inline |
Definition at line 185 of file SymbolUseGraph.h.
|
inline |
Dump the graph in a human readable format.
Definition at line 194 of file SymbolUseGraph.h.
void llzk::SymbolUseGraph::dumpToDotFile | ( | std::string | filename = "" | ) | const |
Dump the graph to file in dot graph format.
Definition at line 257 of file SymbolUseGraph.cpp.
|
inline |
Definition at line 186 of file SymbolUseGraph.h.
const SymbolUseGraphNode * llzk::SymbolUseGraph::lookupNode | ( | mlir::ModuleOp | pathRoot, |
mlir::SymbolRefAttr | path ) const |
Return the existing node for the symbol reference relative to the given module, else nullptr.
const SymbolUseGraphNode * llzk::SymbolUseGraph::lookupNode | ( | mlir::SymbolOpInterface | symbolDef | ) | const |
Return the existing node for the symbol definition op, else nullptr.
|
inline |
Range over all nodes in the graph.
Definition at line 189 of file SymbolUseGraph.h.
void llzk::SymbolUseGraph::print | ( | llvm::raw_ostream & | os | ) | const |
Definition at line 216 of file SymbolUseGraph.cpp.
|
inline |
Definition at line 175 of file SymbolUseGraph.h.
|
inline |
Definition at line 176 of file SymbolUseGraph.h.
|
inline |
Range over root nodes (i.e., nodes that have no predecessors).
Definition at line 179 of file SymbolUseGraph.h.
|
inline |
Return the total number of nodes in the graph.
Definition at line 171 of file SymbolUseGraph.h.
|
friend |
Definition at line 155 of file SymbolUseGraph.h.
|
friend |
Definition at line 155 of file SymbolUseGraph.h.