replaced all recursive computed_value calls ba value_of()
[libfirm] / ir / ir / irgraph_t.h
index 1f78f26..d18b039 100644 (file)
  */
 
 
-# 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"
 
@@ -91,6 +97,9 @@ struct ir_graph {
   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
@@ -134,6 +143,13 @@ int node_is_in_irgs_storage(ir_graph *irg, ir_node *n);
 /* 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);
@@ -372,7 +388,14 @@ __get_irg_callee_info_state(ir_graph *irg) {
 
 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
@@ -419,6 +442,7 @@ __inc_irg_block_visited(ir_graph *irg)
   ++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)