*/
-# ifndef _IRGRAPH_T_H_
-# define _IRGRAPH_T_H_
-# include "obst.h"
-# include "pset.h"
-# include "irgraph.h"
-# include "firm_common_t.h"
-# include "irtypeinfo.h"
+#ifndef _IRGRAPH_T_H_
+#define _IRGRAPH_T_H_
+
+#include "irgraph.h"
+
+#include "firm_common_t.h"
+#include "irtypeinfo.h"
+#include "irprog.h"
+
+#include "irloop.h"
+
+#include "obst.h"
+#include "pset.h"
#define FRAME_TP_SUFFIX "frame_tp"
/* -- Fields indicating different states of irgraph -- */
irg_phase_state phase_state; /**< compiler phase */
- op_pinned pinned; /**< Flag for status of nodes */
+ op_pin_state op_pin_state_pinned; /**< Flag for status of nodes */
irg_outs_state outs_state; /**< Out edges. */
irg_dom_state dom_state; /**< Dominator information */
irg_typeinfo_state typeinfo_state; /**< Validity of type information */
int *caller_isbe; /**< For callgraph analyses: set if backedge. */
ir_graph **callees; /**< For callgraph analyses. */
int *callee_isbe; /**< For callgraph analyses: set if backedge. */
+ int callgraph_loop_depth;
+ int callgraph_recursion_depth;
+ ir_loop *l;
/* -- Fields for Walking the graph -- */
unsigned long visited; /**< this flag is an identifier for
ir_graph *new_const_code_irg(void);
/**
- * Set the pinned state of a graph.
+ * Set the op_pin_state_pinned state of a graph.
*
* @irg the IR graph
* @p new pin state
*/
INLINE void
-set_irg_pinned (ir_graph *irg, op_pinned p);
+set_irg_pinned (ir_graph *irg, op_pin_state p);
/** Returns the obstack associated with the graph. */
struct obstack *get_irg_obstack(ir_graph *irg);
irg->phase_state = phase_low;
}
-static INLINE op_pinned
+static INLINE op_pin_state
__get_irg_pinned(ir_graph *irg) {
- return irg->pinned;
+ return irg->op_pin_state_pinned;
}
static INLINE irg_outs_state
}
static INLINE void
-__set_irg_pinned(ir_graph *irg, op_pinned p) {
- irg->pinned = p;
+__set_irg_pinned(ir_graph *irg, op_pin_state p) {
+ irg->op_pin_state_pinned = p;
}
static INLINE irg_callee_info_state
static INLINE void
__set_irg_callee_info_state(ir_graph *irg, irg_callee_info_state s) {
+ irg_callee_info_state irp_state = get_irp_callee_info_state();
+
irg->callee_info_state = s;
+
+ /* I could compare ... but who knows? */
+ if ((irp_state == irg_callee_info_consistent) ||
+ ((irp_state == irg_callee_info_inconsistent) && (s == irg_callee_info_none)))
+ set_irp_callee_info_state(s);
}
static INLINE irg_inline_property
#define set_irg_bad(irg, node) __set_irg_bad(irg, node)
#define get_irg_current_block(irg) __get_irg_current_block(irg)
#define set_irg_current_block(irg, node) __set_irg_current_block(irg, node)
-#define get_irg_ent(irg) __get_irg_ent(irg)
-#define set_irg_ent(irg, ent) __set_irg_ent(irg, ent)
+#define get_irg_entity(irg) __get_irg_ent(irg)
+#define set_irg_entity(irg, ent) __set_irg_ent(irg, ent)
#define get_irg_frame_type(irg) __get_irg_frame_type(irg)
#define set_irg_frame_type(irg, ftp) __set_irg_frame_type(irg, ftp)
#define get_irg_obstack(irg) __get_irg_obstack(irg)