16  for (
auto &node : 
nodes) {
 
   20    auto hwModuleLikeNode =
 
   21        dyn_cast<HWModuleLike>(node.getModule().getOperation());
 
   22    if (hwModuleLikeNode && hwModuleLikeNode.isPublic())
 
 
   29      cast<igraph::ModuleOpInterface>(module.getOperation()));
 
   30  if (module.isPublic())
 
 
   36  for (
auto *instance : llvm::make_early_inc_range(
entry)) {
 
   37    if (instance->getTarget() == node)
 
 
HW-specific instance graph with a virtual entry node linking to all publicly visible modules.
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.
InstanceRecord * addInstance(InstanceOpInterface instance, InstanceGraphNode *target)
Record a new instance op in the body of this module.
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.
void erase()
Erase this instance record, removing it from the parent module and the target's use-list.
The InstanceGraph op interface, see InstanceGraphInterface.td for more details.