+/**
+ * Index constants for nodes that can be accessed through the graph itself.
+ */
+enum irg_anchors {
+ anchor_start_block = 0, /**< block the start node will belong to */
+ anchor_start, /**< start node of this ir_graph */
+ anchor_end_block, /**< block the end node will belong to */
+ anchor_end, /**< end node of this ir_graph */
+ anchor_end_reg, /**< end node of this ir_graph */
+ anchor_end_except, /**< end node of this ir_graph */
+ anchor_frame, /**< method's frame */
+ anchor_globals, /**< pointer to the data segment containing all
+ globals as well as global procedures. */
+ anchor_tls, /**< pointer to the thread local storage containing all
+ thread local data. */
+ anchor_initial_mem, /**< initial memory of this graph */
+ anchor_args, /**< methods arguments */
+ anchor_value_param_base, /**< method value param base */
+ anchor_bad, /**< bad node of this ir_graph, the one and
+ only in this graph */
+ anchor_no_mem, /**< NoMem node of this ir_graph, the one and only in this graph */
+ anchor_max
+};
+
+/** A callgraph entry for callees. */
+typedef struct cg_callee_entry {
+ ir_graph *irg; /**< The called irg. */
+ ir_node **call_list; /**< The list of all calls to the irg. */
+ int max_depth; /**< Maximum depth of all Call nodes to irg. */
+} cg_callee_entry;
+
+/**
+ * An ir_graph holds all information for a procedure.
+ */