llir-opt
0.0.1
Low-Level Post-Link Optimiser for OCaml and C
|
7 #include <llvm/ADT/GraphTraits.h>
8 #include <llvm/ADT/PointerUnion.h>
10 #include "core/data.h"
11 #include "core/object.h"
12 #include "core/atom.h"
34 iterator() : it_(static_cast<Item *>(nullptr)) {}
36 bool operator!=(
const iterator &that)
const {
return !(*
this == that); }
37 bool operator==(
const iterator &that)
const;
48 Node *operator*()
const;
54 llvm::PointerUnion<Item *, Object *> it_;
65 iterator
begin()
const;
66 iterator end()
const {
return iterator(); }
72 friend class iterator;
76 llvm::PointerUnion<Object *, Prog *> node_;
93 friend class Node::iterator;
97 mutable std::unordered_map<Object *, std::unique_ptr<Node>> nodes_;
~ObjectGraph()
Cleanup.
Definition: object_graph.cpp:174
Graph traits for call graph nodes.
Definition: call_graph.h:129
Definition: object_graph.h:19
Definition: object_graph.h:24
Iterator over object references.
Definition: object_graph.h:27
const Node * Entry() const
Returns the virtual the entry node.
Definition: object_graph.h:87
Node * operator[](Object *o) const
Returns the node for an object.
Definition: object_graph.cpp:179
Object * GetObject() const
Returns the object, null for virtual entry.
Definition: object_graph.cpp:162
Node(const ObjectGraph *graph, Prog *prog)
Entry node.
Definition: object_graph.cpp:131
Definition: object_graph.h:104
iterator begin() const
Return iterators over the referenced objects.
Definition: object_graph.cpp:143
iterator()
End iterator.
Definition: object_graph.h:34
ObjectGraph(Prog &p)
Creates a object graph for a program.
Definition: object_graph.cpp:168