Home | History | Annotate | Download | only in Analysis

Lines Matching refs:Edge

16 // memory location, and each edge is an action that happened on that memory
21 // the edge labels (actions) conforms to a context-free grammar.
122 // The edge used when we have an edge going from some handle to a Value.
128 // The edge used when our edge goes from a value to a handle that may have
136 struct Edge {
137 // \brief Which value the edge is coming from
140 // \brief Which value the edge is pointing to
143 // \brief Edge weight
151 Edge(Value *From, Value *To, EdgeType W, StratifiedAttrs A)
158 SmallVectorImpl<Edge> &Output;
161 GetEdgesVisitor(CFLAAResult &AA, SmallVectorImpl<Edge> &Output)
170 Output.push_back(Edge(Ptr, Ptr, EdgeType::Assign, AttrUnknown));
175 Output.push_back(Edge(Ptr, Ptr, EdgeType::Assign, AttrUnknown));
180 Edge(&Inst, Inst.getOperand(0), EdgeType::Assign, AttrNone));
186 Output.push_back(Edge(&Inst, Op1, EdgeType::Assign, AttrNone));
187 Output.push_back(Edge(&Inst, Op2, EdgeType::Assign, AttrNone));
193 Output.push_back(Edge(Ptr, Val, EdgeType::Dereference, AttrNone));
199 Output.push_back(Edge(Ptr, Val, EdgeType::Dereference, AttrNone));
204 Output.push_back(Edge(&Inst, Val, EdgeType::Assign, AttrNone));
210 Output.push_back(Edge(&Inst, Op, EdgeType::Assign, AttrNone));
212 Output.push_back(Edge(&Inst, *I, EdgeType::Assign, AttrNone));
222 Output.push_back(Edge(&Inst, TrueVal, EdgeType::Assign, AttrNone));
224 Output.push_back(Edge(&Inst, FalseVal, EdgeType::Assign, AttrNone));
232 Output.push_back(Edge(Val, Ptr, EdgeType::Reference, AttrNone));
238 Output.push_back(Edge(Ptr, Val, EdgeType::Dereference, AttrNone));
249 Output.push_back(Edge(Val, Val, EdgeType::Assign, AttrAll));
319 // Adding an edge from argument -> return value for each parameter that
342 Output.push_back(Edge(FuncValue, ArgVal, EdgeType::Assign,
370 Output.push_back(Edge(MainVal, SubVal, EdgeType::Assign, NewAttrs));
394 Output.push_back(Edge(&Inst, V, EdgeType::Assign, AttrAll));
397 Output.push_back(Edge(&Inst, &Inst, EdgeType::Assign, AttrAll));
412 Output.push_back(Edge(Val, Ptr, EdgeType::Reference, AttrNone));
418 Output.push_back(Edge(&Inst, Vec, EdgeType::Assign, AttrNone));
419 Output.push_back(Edge(&Inst, Val, EdgeType::Dereference, AttrNone));
426 Output.push_back(Edge(&Inst, &Inst, EdgeType::Assign, AttrAll));
432 Output.push_back(Edge(&Inst, Agg, EdgeType::Assign, AttrNone));
433 Output.push_back(Edge(&Inst, Val, EdgeType::Dereference, AttrNone));
438 Output.push_back(Edge(&Inst, Ptr, EdgeType::Reference, AttrNone));
444 Output.push_back(Edge(&Inst, From1, EdgeType::Assign, AttrNone));
445 Output.push_back(Edge(&Inst, From2, EdgeType::Assign, AttrNone));
504 struct Edge {
508 Edge(const EdgeTypeT &W, const Node &N) : Weight(W), Other(N) {}
510 bool operator==(const Edge &E) const {
514 bool operator!=(const Edge &E) const { return !operator==(E); }
518 std::vector<Edge> Edges;
529 // ----- Various Edge iterators for the graph ----- //
537 EdgeIterator(const typename std::vector<Edge>::const_iterator &Iter)
567 typename std::vector<Edge>::const_iterator Current;
573 EdgeIterable(const std::vector<Edge> &Edges)
581 typename std::vector<Edge>::const_iterator BeginIter;
582 typename std::vector<Edge>::const_iterator EndIter;
611 FromNode.Edges.push_back(Edge(Weight, To));
612 ToNode.Edges.push_back(Edge(ReverseWeight, From));
649 static void argsToEdges(CFLAAResult &, Instruction *, SmallVectorImpl<Edge> &);
652 static void argsToEdges(CFLAAResult &, ConstantExpr *, SmallVectorImpl<Edge> &);
667 SmallVectorImpl<Edge> &);
756 SmallVectorImpl<Edge> &Output) {
764 SmallVectorImpl<Edge> &Output) {
784 SmallVectorImpl<Edge> &Results) {
788 SmallVector<Edge, 8> ConstexprEdges;
798 for (auto &Edge : ConstexprEdges) {
799 if (auto *Nested = dyn_cast<ConstantExpr>(Edge.From))
803 if (auto *Nested = dyn_cast<ConstantExpr>(Edge.To))
833 SmallVector<Edge, 8> Edges;
846 const auto addEdgeToGraph = [&Graph, &findOrInsertNode](const Edge &E) {
856 for (const Edge &E : Edges) {