16 for (
auto &node :
nodes) {
20 auto hwModuleLikeNode =
21 dyn_cast<HWModuleLike>(node.getModule().getOperation());
22 if (hwModuleLikeNode &&
23 cast<mlir::SymbolOpInterface>(hwModuleLikeNode.getOperation())
25 entry.addInstance({}, &node);
31 cast<igraph::ModuleOpInterface>(module.getOperation()));
32 if (cast<mlir::SymbolOpInterface>(module.getOperation()).isPublic())
33 entry.addInstance({}, node);
38 for (
auto *instance : llvm::make_early_inc_range(
entry)) {
39 if (instance->getTarget() == node)
igraph::InstanceGraphNode * addHWModule(HWModuleLike module)
Adds a module, updating links to entry.
void erase(igraph::InstanceGraphNode *node) override
Erases a module, updating links to entry.
InstanceGraph(Operation *operation)
igraph::InstanceGraphNode entry
This is a Node in the InstanceGraph.
virtual InstanceGraphNode * addModule(ModuleOpInterface module)
Add a newly created module to the instance graph.
NodeList nodes
The storage for graph nodes, with deterministic iteration.
virtual void erase(InstanceGraphNode *node)
Remove this module from the instance graph.
The InstanceGraph op interface, see InstanceGraphInterface.td for more details.