Home | History | Annotate | Download | only in Analysis

Lines Matching defs:Edge

16 // memory location, and each edge is an action that happened on that memory
22 // the edge labels (actions) conforms to a context-free grammar.
112 // The edge used when we have an edge going from some handle to a Value.
118 // The edge used when our edge goes from a value to a handle that may have
126 struct Edge {
127 // \brief Which value the edge is coming from
130 // \brief Which value the edge is pointing to
133 // \brief Edge weight
141 Edge(Value *From, Value *To, EdgeType W, StratifiedAttrs A)
263 SmallVectorImpl<Edge> &Output;
266 GetEdgesVisitor(CFLAliasAnalysis &AA, SmallVectorImpl<Edge> &Output)
275 Output.push_back(Edge(Ptr, Ptr, EdgeType::Assign, AttrUnknown));
280 Output.push_back(Edge(Ptr, Ptr, EdgeType::Assign, AttrUnknown));
285 Edge(&Inst, Inst.getOperand(0), EdgeType::Assign, AttrNone));
291 Output.push_back(Edge(&Inst, Op1, EdgeType::Assign, AttrNone));
292 Output.push_back(Edge(&Inst, Op2, EdgeType::Assign, AttrNone));
298 Output.push_back(Edge(Ptr, Val, EdgeType::Dereference, AttrNone));
304 Output.push_back(Edge(Ptr, Val, EdgeType::Dereference, AttrNone));
310 Output.push_back(Edge(&Inst, Val, EdgeType::Assign, AttrNone));
316 Output.push_back(Edge(&Inst, Op, EdgeType::Assign, AttrNone));
318 Output.push_back(Edge(&Inst, *I, EdgeType::Assign, AttrNone));
328 Output.push_back(Edge(&Inst, TrueVal, EdgeType::Assign, AttrNone));
330 Output.push_back(Edge(&Inst, FalseVal, EdgeType::Assign, AttrNone));
338 Output.push_back(Edge(Val, Ptr, EdgeType::Reference, AttrNone));
344 Output.push_back(Edge(Ptr, Val, EdgeType::Dereference, AttrNone));
355 Output.push_back(Edge(Val, Val, EdgeType::Assign, AttrAll));
425 // Adding an edge from argument -> return value for each parameter that
448 Output.push_back(Edge(FuncValue, ArgVal, EdgeType::Assign,
476 Output.push_back(Edge(MainVal, SubVal, EdgeType::Assign, NewAttrs));
493 Output.push_back(Edge(&Inst, V, EdgeType::Assign, AttrAll));
508 Output.push_back(Edge(Val, Ptr, EdgeType::Reference, AttrNone));
514 Output.push_back(Edge(&Inst, Vec, EdgeType::Assign, AttrNone));
515 Output.push_back(Edge(&Inst, Val, EdgeType::Dereference, AttrNone));
522 Output.push_back(Edge(&Inst, &Inst, EdgeType::Assign, AttrAll));
528 Output.push_back(Edge(&Inst, Agg, EdgeType::Assign, AttrNone));
529 Output.push_back(Edge(&Inst, Val, EdgeType::Dereference, AttrNone));
534 Output.push_back(Edge(&Inst, Ptr, EdgeType::Reference, AttrNone));
540 Output.push_back(Edge(&Inst, From1, EdgeType::Assign, AttrNone));
541 Output.push_back(Edge(&Inst, From2, EdgeType::Assign, AttrNone));
587 struct Edge {
591 Edge(const EdgeTypeT &W, const Node &N) : Weight(W), Other(N) {}
593 bool operator==(const Edge &E) const {
597 bool operator!=(const Edge &E) const { return !operator==(E); }
601 std::vector<Edge> Edges;
612 // ----- Various Edge iterators for the graph ----- //
620 EdgeIterator(const typename std::vector<Edge>::const_iterator &Iter)
650 typename std::vector<Edge>::const_iterator Current;
656 EdgeIterable(const std::vector<Edge> &Edges)
664 typename std::vector<Edge>::const_iterator BeginIter;
665 typename std::vector<Edge>::const_iterator EndIter;
694 FromNode.Edges.push_back(Edge(Weight, To));
695 ToNode.Edges.push_back(Edge(ReverseWeight, From));
743 SmallVectorImpl<Edge> &);
758 SmallVectorImpl<Edge> &);
843 SmallVectorImpl<Edge> &Output) {
864 SmallVectorImpl<Edge> &Results) {
868 SmallVector<Edge, 8> ConstexprEdges;
878 for (auto &Edge : ConstexprEdges) {
879 if (Edge.From == Inst.get())
880 Edge.From = CExpr;
881 else if (auto *Nested = dyn_cast<ConstantExpr>(Edge.From))
884 if (Edge.To == Inst.get())
885 Edge.To = CExpr;
886 else if (auto *Nested = dyn_cast<ConstantExpr>(Edge.To))
915 SmallVector<Edge, 8> Edges;
928 const auto addEdgeToGraph = [&Graph, &findOrInsertNode](const Edge &E) {
938 for (const Edge &E : Edges) {