X-Git-Url: http://nsz.repo.hu/git/?a=blobdiff_plain;f=ir%2Fir%2Firgraph.h;h=54034d6ba2d14bb3ba73313fdcbf82307a30d524;hb=e570f00fb465d212dde403160e97ab45d36d1d7e;hp=69bc0313089b6d4615faf445ea58d0d08721d54d;hpb=c2b4a9f3d77fda7989e9cbd6293b9f9f58f4221c;p=libfirm diff --git a/ir/ir/irgraph.h b/ir/ir/irgraph.h index 69bc03130..54034d6ba 100644 --- a/ir/ir/irgraph.h +++ b/ir/ir/irgraph.h @@ -89,12 +89,14 @@ bool get_interprocedural_view(void); void set_interprocedural_view(bool state); /** Create a new ir graph to built ir for a procedure. - ent is the entity representing this procedure, i.e., the type of the - entity must be of a method type. The constructor automatically sets the - field irg of the entity as well as current_ir_graph to the new ir graph. - n_loc is the number of local variables in this procedure including - the procedure parameters. - The state of the ir graph is: phase_building, pinned, no_outs. */ + * + * ent is the entity representing this procedure, i.e., the type of the + * entity must be of a method type. The constructor automatically sets the + * field irg of the entity as well as current_ir_graph to the new ir graph. + * n_loc is the number of local variables in this procedure including + * the procedure parameters. + * The constructor adds the new irgraph to the list in ir_prog. + * The state of the ir graph is: phase_building, pinned, no_outs. */ ir_graph *new_ir_graph (entity *ent, int n_loc); /** Frees the passed irgraph. @@ -119,6 +121,8 @@ void free_ir_graph (ir_graph *irg); int is_ir_graph(void *thing); +#define get_irg_entity get_irg_ent +#define set_irg_entity set_irg_ent entity *get_irg_ent (ir_graph *irg); void set_irg_ent (ir_graph *irg, entity *ent); @@ -144,9 +148,11 @@ ir_node *get_irg_cstore (ir_graph *irg); void set_irg_cstore (ir_graph *irg, ir_node *node); /* end oblivious */ +/* node that represents frame pointer */ ir_node *get_irg_frame (ir_graph *irg); void set_irg_frame (ir_graph *irg, ir_node *node); +/* node that represents global pointer */ ir_node *get_irg_globals (ir_graph *irg); void set_irg_globals (ir_graph *irg, ir_node *node); @@ -161,8 +167,10 @@ ir_node *get_irg_bad (ir_graph *irg); void set_irg_bad (ir_graph *irg, ir_node *node); /* Use new_Unknown() instead!! */ +/* GL removed: we need unknown with mode for analyses. ir_node *get_irg_unknown (ir_graph *irg); void set_irg_unknown (ir_graph *irg, ir_node *node); +*/ int get_irg_n_locs (ir_graph *irg); @@ -235,31 +243,57 @@ void set_irg_dom_inconsistent(ir_graph *irg); /* state: loopinfo_state Loop information describes the loops within the control and - data flow of the procedure. -tpedef enum { @@@ make unrecognizable for jni script!!! - no_loopinfo, - loopinfo_consistent, - loopinfo_inconsistent + data flow of the procedure. */ +typedef enum { + loopinfo_none, /**< No loop information is constructed. Default. */ + loopinfo_consistent, /**< IntRAprocedural loop information constructed and valid. */ + loopinfo_inconsistent, /**< IntRAprocedural loop information constructed and invalid. */ + loopinfo_ip_consistent, /**< IntERprocedural loop information constructed and valid. */ + loopinfo_ip_inconsistent /**< IntERprocedural loop information constructed and invalid. */ } irg_loopinfo_state; irg_loopinfo_state get_irg_loopinfo_state(ir_graph *irg); +void set_irg_loopinfo_state(ir_graph *irg, irg_loopinfo_state s); void set_irg_loopinfo_inconsistent(ir_graph *irg); -*/ + + +/** state: callee_information_state + * Call nodes contain a list of possible callees. This list must be + * computed by an anlyses. */ +typedef enum { + irg_callee_info_none, + irg_callee_info_consistent, + irg_callee_info_inconsistent +} irg_callee_info_state; +irg_callee_info_state get_irg_callee_info_state(ir_graph *irg); +void set_irg_callee_info_state(ir_graph *irg, irg_callee_info_state s); + +/** property: + * Tells how to handle an ir graph in inlineing. + */ +typedef enum { + irg_inline_any, /**< No restriction on inlineing. Default. */ + irg_inline_forbidden, /**< The graph may not be inlined. */ + irg_inline_recomended, /**< The graph should be inlined. */ + irg_inline_forced /**< The graph must be inlined. */ +} irg_inline_property; +irg_inline_property get_irg_inline_property(ir_graph *irg); +void set_irg_inline_property(ir_graph *irg, irg_inline_property s); /* A void * field to link arbritary information to the node. */ -void set_irg_link (ir_graph *irg, void *thing); +void set_irg_link (ir_graph *irg, void *thing); void *get_irg_link (ir_graph *irg); /* increments visited by one */ -void inc_irg_visited(ir_graph *irg); +void inc_irg_visited (ir_graph *irg); unsigned long get_irg_visited (ir_graph *irg); -void set_irg_visited(ir_graph *irg, unsigned long i); -unsigned long get_max_irg_visited(void); -void set_max_irg_visited(int val); -unsigned long inc_max_irg_visited(void); +void set_irg_visited (ir_graph *irg, unsigned long i); +unsigned long get_max_irg_visited (void); +void set_max_irg_visited (int val); +unsigned long inc_max_irg_visited (void); /* increments block_visited by one */ -void inc_irg_block_visited(ir_graph *irg); +void inc_irg_block_visited (ir_graph *irg); unsigned long get_irg_block_visited (ir_graph *irg); -void set_irg_block_visited(ir_graph *irg, unsigned long i); +void set_irg_block_visited (ir_graph *irg, unsigned long i); # endif /* _IRGRAPH_H_ */