reference, declaration → definition definition → references, declarations, derived classes, virtual overrides reference to multiple definitions → definitions unreferenced |
25 class DDGEdge;
39 static inline T* getEmptyKey() { 41 Val <<= PointerLikeTypeTraits<T*>::NumLowBitsAvailable; 45 static inline T* getTombstoneKey() { 47 Val <<= PointerLikeTypeTraits<T*>::NumLowBitsAvailable; 51 static unsigned getHashValue(const T *PtrVal) { 56 static bool isEqual(const T *LHS, const T *RHS) { return LHS == RHS; } 56 static bool isEqual(const T *LHS, const T *RHS) { return LHS == RHS; }include/llvm/ADT/DirectedGraph.h
32 explicit DGEdge(const DGEdge<NodeType, EdgeType> &E) 34 DGEdge<NodeType, EdgeType> &operator=(const DGEdge<NodeType, EdgeType> &E) { 34 DGEdge<NodeType, EdgeType> &operator=(const DGEdge<NodeType, EdgeType> &E) { 41 bool operator==(const EdgeType &E) const { return getDerived().isEqualTo(E); } 42 bool operator!=(const EdgeType &E) const { return !operator==(E); } 53 bool isEqualTo(const EdgeType &E) const { return this == &E; } 56 EdgeType &getDerived() { return *static_cast<EdgeType *>(this); } 57 const EdgeType &getDerived() const { 69 using EdgeListTy = SetVector<EdgeType *>; 74 explicit DGNode(EdgeType &E) : Edges() { Edges.insert(&E); } 77 explicit DGNode(const DGNode<NodeType, EdgeType> &N) : Edges(N.Edges) {} 78 DGNode(DGNode<NodeType, EdgeType> &&N) : Edges(std::move(N.Edges)) {} 80 DGNode<NodeType, EdgeType> &operator=(const DGNode<NodeType, EdgeType> &N) { 80 DGNode<NodeType, EdgeType> &operator=(const DGNode<NodeType, EdgeType> &N) { 84 DGNode<NodeType, EdgeType> &operator=(const DGNode<NodeType, EdgeType> &&N) { 84 DGNode<NodeType, EdgeType> &operator=(const DGNode<NodeType, EdgeType> &&N) { 98 const EdgeType &front() const { return *Edges.front(); } 99 EdgeType &front() { return *Edges.front(); } 100 const EdgeType &back() const { return *Edges.back(); } 101 EdgeType &back() { return *Edges.back(); } 107 bool findEdgesTo(const NodeType &N, SmallVectorImpl<EdgeType *> &EL) const { 109 for (auto *E : Edges) 117 bool addEdge(EdgeType &E) { return Edges.insert(&E); } 120 void removeEdge(EdgeType &E) { Edges.remove(&E); } 166 using EdgeListTy = SmallVector<EdgeType *, 10>; 170 using DGraphType = DirectedGraph<NodeType, EdgeType>; 216 bool findIncomingEdgesToNode(const NodeType &N, SmallVectorImpl<EdgeType*> &EL) const { 243 for (auto *E : EL) 255 bool connect(NodeType &Src, NodeType &Dst, EdgeType &E) {include/llvm/Analysis/DDG.h
26 using DDGNodeBase = DGNode<DDGNode, DDGEdge>; 27 using DDGEdgeBase = DGEdge<DDGNode, DDGEdge>; 28 using DDGBase = DirectedGraph<DDGNode, DDGEdge>; 170 DDGEdge(const DDGEdge &E) : DDGEdgeBase(E), Kind(E.getKind()) {} 171 DDGEdge(DDGEdge &&E) : DDGEdgeBase(std::move(E)), Kind(E.Kind) {} 172 DDGEdge &operator=(const DDGEdge &E) { 172 DDGEdge &operator=(const DDGEdge &E) { 178 DDGEdge &operator=(DDGEdge &&E) { 178 DDGEdge &operator=(DDGEdge &&E) { 247 using EdgeType = DDGEdge; 287 DDGEdge &createDefUseEdge(DDGNode &Src, DDGNode &Tgt) final override { 288 auto *E = new DDGEdge(Tgt, DDGEdge::EdgeKind::RegisterDefUse); 288 auto *E = new DDGEdge(Tgt, DDGEdge::EdgeKind::RegisterDefUse); 288 auto *E = new DDGEdge(Tgt, DDGEdge::EdgeKind::RegisterDefUse); 293 DDGEdge &createMemoryEdge(DDGNode &Src, DDGNode &Tgt) final override { 294 auto *E = new DDGEdge(Tgt, DDGEdge::EdgeKind::MemoryDependence); 294 auto *E = new DDGEdge(Tgt, DDGEdge::EdgeKind::MemoryDependence); 294 auto *E = new DDGEdge(Tgt, DDGEdge::EdgeKind::MemoryDependence); 299 DDGEdge &createRootedEdge(DDGNode &Src, DDGNode &Tgt) final override { 300 auto *E = new DDGEdge(Tgt, DDGEdge::EdgeKind::Rooted); 300 auto *E = new DDGEdge(Tgt, DDGEdge::EdgeKind::Rooted); 300 auto *E = new DDGEdge(Tgt, DDGEdge::EdgeKind::Rooted); 311 raw_ostream &operator<<(raw_ostream &OS, const DDGEdge &E); 312 raw_ostream &operator<<(raw_ostream &OS, const DDGEdge::EdgeKind K); 349 static DDGNode *DDGGetTargetNode(DGEdge<DDGNode, DDGEdge> *P) { 389 static const DDGNode *DDGGetTargetNode(const DGEdge<DDGNode, DDGEdge> *P) {include/llvm/Support/PointerLikeTypeTraits.h
56 static inline void *getAsVoidPointer(T *P) { return P; } 57 static inline T *getFromVoidPointer(void *P) { return static_cast<T *>(P); } 59 enum { NumLowBitsAvailable = detail::ConstantLog2<alignof(T)>::value };lib/Analysis/DDG.cpp
105 raw_ostream &llvm::operator<<(raw_ostream &OS, const DDGEdge::EdgeKind K) { 108 case DDGEdge::EdgeKind::RegisterDefUse: 111 case DDGEdge::EdgeKind::MemoryDependence: 114 case DDGEdge::EdgeKind::Rooted: 117 case DDGEdge::EdgeKind::Unknown: 125 raw_ostream &llvm::operator<<(raw_ostream &OS, const DDGEdge &E) { 156 for (auto *E : *N)usr/include/c++/7.4.0/bits/move.h
98 move(_Tp&& __t) noexcept
usr/include/c++/7.4.0/type_traits1633 { typedef _Tp type; }; 1983 { typedef _Up type; };