*/
-# 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"
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
/* inline functions for graphs */
/*-------------------------------------------------------------------*/
+extern int __interprocedural_view;
+
+static INLINE int
+__get_interprocedural_view(void) {
+ return __interprocedural_view;
+}
+
static INLINE int
__is_ir_graph(void *thing) {
return (get_kind(thing) == k_ir_graph);
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
++irg->block_visited;
}
+#define get_interprocedural_view() __get_interprocedural_view()
#define is_ir_graph(thing) __is_ir_graph(thing)
#define get_irg_start_block(irg) __get_irg_start_block(irg)
#define set_irg_start_block(irg, node) __set_irg_start_block(irg, node)