[#llvm-GraphTraits-061] = xref:llvm.adoc[llvm]::GraphTraits :relfileprefix: ../ :mrdocs: Traits for traversing a graph type without copying it. == Synopsis Declared in `<llvm/ADT/GraphTraits.h>` [source,cpp,subs="verbatim,replacements,macros,-callouts"] ---- template<class GraphType> struct GraphTraits; ---- == Description Specialize for each graph (CFG, DomTree, …). The primary template is empty except for a deliberate incomplete `NodeRef` that fails compilation when no specialization is visible. May reinterpret the graph via richer `NodeRef` values (see LoopBodyTraits). == Type Aliases [cols="1,4"] |=== | Name| Description | xref:llvm/GraphTraits-061/NodeRef.adoc[`NodeRef`] | Placeholder that fails compilation unless GraphTraits is specialized. |=== == Specializations [cols="1,4"] |=== | Name| Description | xref:llvm/GraphTraits-0ec.adoc[`GraphTraits<ValueInfo>`] | GraphTraits specialization so ValueInfo can be used as a call‐graph node. | xref:llvm/GraphTraits-0cfb.adoc[`GraphTraits<FlatIt<MachineRegion*>>`] | GraphTraits specialization for flat iteration of MachineRegion graphs. | xref:llvm/GraphTraits-060.adoc[`GraphTraits<FlatIt<MachineRegionNode*>>`] | GraphTraits specialization for flat iteration of MachineRegionNode graphs. | xref:llvm/GraphTraits-0ee4.adoc[`GraphTraits<FlatIt<Region*>>`] | GraphTraits specialization that walks a Region in flat CFG mode. | xref:llvm/GraphTraits-02890.adoc[`GraphTraits<FlatIt<RegionNode*>>`] | GraphTraits specialization for flat RegionNode successors. | xref:llvm/GraphTraits-0fb.adoc[`GraphTraits<FlatIt<MachineRegion const*>>`] | GraphTraits specialization for flat iteration of const MachineRegion graphs. | xref:llvm/GraphTraits-02f.adoc[`GraphTraits<FlatIt<MachineRegionNode const*>>`] | GraphTraits specialization for flat iteration of const MachineRegionNode graphs. | xref:llvm/GraphTraits-07ab.adoc[`GraphTraits<FlatIt<Region const*>>`] | GraphTraits specialization that walks a Region in flat CFG mode. | xref:llvm/GraphTraits-070.adoc[`GraphTraits<FlatIt<RegionNode const*>>`] | GraphTraits specialization for flat RegionNode successors. | xref:llvm/GraphTraits-0fc.adoc[`GraphTraits<Inverse<BasicBlock*>>`] | GraphTraits specialization walking a BasicBlock CFG in inverse (predecessor) order. | xref:llvm/GraphTraits-041.adoc[`GraphTraits<Inverse<Function*>>`] | GraphTraits specialization walking a Function CFG in inverse (predecessor) order. | xref:llvm/GraphTraits-026.adoc[`GraphTraits<Inverse<MachineBasicBlock*>>`] | GraphTraits specialization walking a MachineBasicBlock CFG in inverse order via predecessors. | xref:llvm/GraphTraits-04ce.adoc[`GraphTraits<Inverse<MachineFunction*>>`] | GraphTraits specialization walking a MachineFunction CFG in inverse order via predecessor edges. | xref:llvm/GraphTraits-09b.adoc[`GraphTraits<Inverse<MemoryAccess*>>`] | Inverse GraphTraits specialization that walks MemoryAccess users. | xref:llvm/GraphTraits-0b1.adoc[`GraphTraits<Inverse<BasicBlock const*>>`] | GraphTraits specialization walking a const BasicBlock CFG in inverse order. | xref:llvm/GraphTraits-0d1.adoc[`GraphTraits<Inverse<Function const*>>`] | GraphTraits specialization walking a const Function CFG in inverse order. | xref:llvm/GraphTraits-018.adoc[`GraphTraits<Inverse<MachineBasicBlock const*>>`] | GraphTraits specialization walking a const MachineBasicBlock CFG in inverse order via predecessors. | xref:llvm/GraphTraits-0ef.adoc[`GraphTraits<Inverse<MachineFunction const*>>`] | GraphTraits specialization walking a const MachineFunction CFG in inverse order via predecessor edges. | xref:llvm/GraphTraits-0f6.adoc[`GraphTraits<AACallGraphNode*>`] | GraphTraits specialization for the Attributor call graph. | xref:llvm/GraphTraits-0134.adoc[`GraphTraits<AttributorCallGraph*>`] | GraphTraits specialization for the Attributor call graph. | xref:llvm/GraphTraits-0eea.adoc[`GraphTraits<BasicBlock*>`] | GraphTraits specialization treating a BasicBlock as a CFG node via successors. | xref:llvm/GraphTraits-0282.adoc[`GraphTraits<CallGraph*>`] | GraphTraits specialization treating a CallGraph as a graph of nodes. | xref:llvm/GraphTraits-0cf6.adoc[`GraphTraits<CallGraphNode*>`] | GraphTraits specialization for mutable CallGraphNode pointers. | xref:llvm/GraphTraits-07ac.adoc[`GraphTraits<DDGNode*>`] | GraphTraits specialization for mutable DDGNode pointers. | xref:llvm/GraphTraits-068.adoc[`GraphTraits<DOTFuncInfo*>`] | GraphTraits specialization that treats DOTFuncInfo as a CFG of basic blocks. | xref:llvm/GraphTraits-037.adoc[`GraphTraits<DOTMachineFuncInfo*>`] | GraphTraits specialization that treats DOTMachineFuncInfo as a CFG of machine basic blocks. | xref:llvm/GraphTraits-0b6.adoc[`GraphTraits<DataDependenceGraph*>`] | GraphTraits specialization treating a DataDependenceGraph as a graph of nodes. | xref:llvm/GraphTraits-057.adoc[`GraphTraits<DomTreeNode*>`] | GraphTraits specialization for mutable DomTreeNode pointers. | xref:llvm/GraphTraits-0131.adoc[`GraphTraits<DominatorTree*>`] | GraphTraits specialization so DominatorTree can be walked as a graph. | xref:llvm/GraphTraits-051b.adoc[`GraphTraits<Function*>`] | GraphTraits specialization treating a Function as a CFG of basic blocks. | xref:llvm/GraphTraits-02b.adoc[`GraphTraits<LazyCallGraph*>`] | GraphTraits specialization treating a LazyCallGraph as a graph of nodes. | xref:llvm/GraphTraits-033.adoc[`GraphTraits<Loop*>`] | GraphTraits specialization for mutable Loop pointers. | xref:llvm/GraphTraits-095.adoc[`GraphTraits<MachineBasicBlock*>`] | GraphTraits specialization treating a MachineBasicBlock as a CFG node via successors. | xref:llvm/GraphTraits-05d.adoc[`GraphTraits<MachineDomTreeNode*>`] | GraphTraits specialization for mutable MachineDomTreeNode pointers. | xref:llvm/GraphTraits-096.adoc[`GraphTraits<MachineDominatorTree*>`] | GraphTraits specialization so MachineDominatorTree can be walked as a graph. | xref:llvm/GraphTraits-093.adoc[`GraphTraits<MachineFunction*>`] | GraphTraits specialization treating a MachineFunction as a CFG of machine basic blocks, with the entry node as the first block. | xref:llvm/GraphTraits-0f3.adoc[`GraphTraits<MachineLoop*>`] | GraphTraits specialization for mutable MachineLoop pointers. | xref:llvm/GraphTraits-045.adoc[`GraphTraits<MachineRegion*>`] | GraphTraits specialization so MachineRegion can be walked as a graph. | xref:llvm/GraphTraits-08d.adoc[`GraphTraits<MachineRegionInfo*>`] | GraphTraits specialization so MachineRegionInfo can be walked as a flat region graph. | xref:llvm/GraphTraits-0e8.adoc[`GraphTraits<MachineRegionInfoPass*>`] | GraphTraits specialization so MachineRegionInfoPass can be walked as a flat region graph. | xref:llvm/GraphTraits-072.adoc[`GraphTraits<MachineRegionNode*>`] | GraphTraits specialization for mutable MachineRegionNode pointers. | xref:llvm/GraphTraits-0de.adoc[`GraphTraits<MemoryAccess*>`] | GraphTraits specialization that walks defining accesses of a MemoryAccess. | xref:llvm/GraphTraits-086.adoc[`GraphTraits<ModuleSummaryIndex*>`] | GraphTraits specialization so ModuleSummaryIndex can be traversed as a graph. | xref:llvm/GraphTraits-00.adoc[`GraphTraits<LazyCallGraph::Node*>`] | GraphTraits specialization for LazyCallGraph nodes. | xref:llvm/GraphTraits-0f1.adoc[`GraphTraits<PostDominatorTree*>`] | GraphTraits specialization so PostDominatorTree can be walked as a graph. | xref:llvm/GraphTraits-081.adoc[`GraphTraits<ProfiledCallGraph*>`] | GraphTraits specialization treating a ProfiledCallGraph as a graph of nodes. | xref:llvm/GraphTraits-0289e.adoc[`GraphTraits<ProfiledCallGraphNode*>`] | GraphTraits specialization for ProfiledCallGraphNode pointers. | xref:llvm/GraphTraits-047.adoc[`GraphTraits<Region*>`] | GraphTraits specialization that walks a Region as a graph of nodes. | xref:llvm/GraphTraits-023.adoc[`GraphTraits<RegionInfo*>`] | GraphTraits specialization that walks RegionInfo as a flat region graph. | xref:llvm/GraphTraits-014.adoc[`GraphTraits<RegionInfoPass*>`] | GraphTraits specialization that walks RegionInfoPass via its RegionInfo. | xref:llvm/GraphTraits-082.adoc[`GraphTraits<RegionNode*>`] | GraphTraits specialization for hierarchical RegionNode successors. | xref:llvm/GraphTraits-013d.adoc[`GraphTraits<SDNode*>`] | GraphTraits specialization treating SDNode operands as children. | xref:llvm/GraphTraits-07f.adoc[`GraphTraits<SUnit*>`] | GraphTraits specialization so algorithms can walk SUnit predecessor edges. | xref:llvm/GraphTraits-0a8.adoc[`GraphTraits<ScheduleDAG*>`] | GraphTraits specialization for iterating all SUnits in a ScheduleDAG. | xref:llvm/GraphTraits-075.adoc[`GraphTraits<SelectionDAG*>`] | GraphTraits specialization that iterates every node in a SelectionDAG. | xref:llvm/GraphTraits-0d6.adoc[`GraphTraits<BasicBlock const*>`] | GraphTraits specialization treating a const BasicBlock as a CFG node via successors. | xref:llvm/GraphTraits-099.adoc[`GraphTraits<CallGraph const*>`] | GraphTraits specialization treating a const CallGraph as a graph of nodes. | xref:llvm/GraphTraits-0b2.adoc[`GraphTraits<CallGraphNode const*>`] | GraphTraits specialization for const CallGraphNode pointers. | xref:llvm/GraphTraits-058.adoc[`GraphTraits<DDGNode const*>`] | GraphTraits specialization for const DDGNode pointers. | xref:llvm/GraphTraits-0510.adoc[`GraphTraits<DataDependenceGraph const*>`] | GraphTraits specialization treating a const DataDependenceGraph as a graph of nodes. | xref:llvm/GraphTraits-0e9.adoc[`GraphTraits<DomTreeNode const*>`] | GraphTraits specialization for const DomTreeNode pointers. | xref:llvm/GraphTraits-0d9.adoc[`GraphTraits<Function const*>`] | GraphTraits specialization treating a const Function as a CFG of basic blocks. | xref:llvm/GraphTraits-04c4.adoc[`GraphTraits<Loop const*>`] | GraphTraits specialization for const Loop pointers. | xref:llvm/GraphTraits-012.adoc[`GraphTraits<MachineBasicBlock const*>`] | GraphTraits specialization treating a const MachineBasicBlock as a CFG node via successors. | xref:llvm/GraphTraits-04d.adoc[`GraphTraits<MachineDomTreeNode const*>`] | GraphTraits specialization for const MachineDomTreeNode pointers. | xref:llvm/GraphTraits-069.adoc[`GraphTraits<MachineFunction const*>`] | GraphTraits specialization treating a const MachineFunction as a CFG of machine basic blocks, with the entry node as the first block. | xref:llvm/GraphTraits-0b7.adoc[`GraphTraits<MachineLoop const*>`] | GraphTraits specialization for const MachineLoop pointers. | xref:llvm/GraphTraits-0d3.adoc[`GraphTraits<MachineRegion const*>`] | GraphTraits specialization so const MachineRegion can be walked as a graph. | xref:llvm/GraphTraits-0a2.adoc[`GraphTraits<MachineRegionNode const*>`] | GraphTraits specialization for const MachineRegionNode pointers. | xref:llvm/GraphTraits-0dc.adoc[`GraphTraits<Region const*>`] | GraphTraits specialization that walks a Region as a graph of nodes. | xref:llvm/GraphTraits-094.adoc[`GraphTraits<RegionNode const*>`] | GraphTraits specialization for hierarchical RegionNode successors. | xref:llvm/GraphTraits-015.adoc[`GraphTraits<Inverse<Inverse<T>>>`] | GraphTraits for a double‐inverted graph, same as for the original type. |=== == Derived Classes [cols="1,4"] |=== | Name| Description | xref:llvm/GraphTraits-015.adoc[`GraphTraits<Inverse<Inverse<T>>>`] | GraphTraits for a double‐inverted graph, same as for the original type. |=== [.small]#Created with https://www.mrdocs.com[MrDocs]#