X-Git-Url: http://nsz.repo.hu/git/?a=blobdiff_plain;f=ir%2Fir%2Firgraph_t.h;h=1b98e7159f22627c25a9c518582a228307f4fecf;hb=cb91bddc9cacdab7c28e4336847bd3dc248aa549;hp=fb79b0e691954339f29ee87dd02c1e49b1582cdd;hpb=599e9fd21149c903f688d4a3b1eec71dc079f8a0;p=libfirm diff --git a/ir/ir/irgraph_t.h b/ir/ir/irgraph_t.h index fb79b0e69..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" @@ -60,7 +66,7 @@ struct ir_graph { /* -- 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 */ @@ -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 @@ -111,13 +120,13 @@ void init_irgraph(void); 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); @@ -325,9 +334,9 @@ __set_irg_phase_low(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 @@ -361,8 +370,8 @@ __set_irg_loopinfo_state(ir_graph *irg, irg_loopinfo_state s) { } 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 @@ -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 @@ -444,8 +460,8 @@ __inc_irg_block_visited(ir_graph *irg) #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)