X-Git-Url: http://nsz.repo.hu/git/?a=blobdiff_plain;f=ir%2Fir%2Firgraph_t.h;h=1b98e7159f22627c25a9c518582a228307f4fecf;hb=cb91bddc9cacdab7c28e4336847bd3dc248aa549;hp=1f78f26aa8c56065fd0c2ee3dc6e2edec3fb20b1;hpb=dddcc630819f338c3b45e2bc646233e6872d5bb6;p=libfirm diff --git a/ir/ir/irgraph_t.h b/ir/ir/irgraph_t.h index 1f78f26aa..1b98e7159 100644 --- a/ir/ir/irgraph_t.h +++ b/ir/ir/irgraph_t.h @@ -19,13 +19,19 @@ */ -# 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 @@ -372,7 +381,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