X-Git-Url: http://nsz.repo.hu/git/?a=blobdiff_plain;f=ir%2Fir%2Firgraph.h;h=115dc9ff9c675c7e25d218ebde901ad40a6f07ee;hb=b78bdd4d94de46de4156272e6dbfe44e97933a5b;hp=587b2d02d4803b85c487f71b5448eca44d782de1;hpb=88bad16c332b94f3ca6050a58e75eb38925e07c6;p=libfirm diff --git a/ir/ir/irgraph.h b/ir/ir/irgraph.h index 587b2d02d..115dc9ff9 100644 --- a/ir/ir/irgraph.h +++ b/ir/ir/irgraph.h @@ -17,8 +17,8 @@ * * @author Martin Trapp, Christian Schaefer */ -#ifndef _IRGRAPH_H_ -#define _IRGRAPH_H_ +#ifndef _FIRM_IR_IRGRAPH_H_ +#define _FIRM_IR_IRGRAPH_H_ #include @@ -56,22 +56,26 @@ * *frame The ir_node producing the pointer to the stack frame of * the procedure as output. This is the Proj node on the * third output of the start node. This output of the start - * node is tagged as pns_frame_base. In FIRM most local + * node is tagged as pns_frame_base. In FIRM most local * variables are modeled as data flow edges. Static * allocated arrays can not be represented as data flow * edges. Therefore FIRM has to represent them in the stack * frame. * * *globals This models a pointer to a space in the memory where - * _all_ global things are held. Select from this pointer - * with a Sel node the pointer to a global variable / - * procedure / compiler known function... . + * _all_ global things are held. Select from this pointer + * with a Sel node the pointer to a global variable / + * procedure / compiler known function... . * - * *args The ir_node that produces the arguments of the method as - * it's result. This is a Proj node on the fourth output of - * the start node. This output is tagged as pn_Start_T_args. + * *tls This models a pointer to a space in the memory where + * thread local things are held. Select from this pointer + * with a Sel node the pointer to a thread local variable. * - * *proj_args The proj nodes of the args node. + * *args The ir_node that produces the arguments of the method as + * it's result. This is a Proj node on the fourth output of + * the start node. This output is tagged as pn_Start_T_args. + * + * *proj_args The proj nodes of the args node. * * *bad The Bad node is an auxiliary node. It is needed only once, * so there is this globally reachable node. @@ -89,14 +93,14 @@ * Only needed for ir construction. * * params/n_loc An int giving the number of local variables in this - * procedure. This is needed for ir construction. Name will - * be changed. + * procedure. This is needed for ir construction. Name will + * be changed. * * *value_table This hash table (pset) is used for global value numbering - * for optimizing use in iropt.c. + * for optimizing use in iropt.c. * * *Phi_in_stack; a stack needed for automatic Phi construction, needed only - * during ir construction. + * during ir construction. * * visited A int used as flag to traverse the ir_graph. * @@ -137,7 +141,7 @@ void set_interprocedural_view(int state); * procedure: * * - The start block containing a start node and Proj nodes for it's - * five results (X, M, P, P, T). + * seven results (X, M, P, P, P, T, P). * - The end block containing an end node. This block is not matured * after executing new_ir_graph() as predecessors need to be added to it. * (Maturing a block means fixing it's number of predecessors.) @@ -210,12 +214,6 @@ void set_irg_end_reg (ir_graph *irg, ir_node *node); ir_node *get_irg_end_except (const ir_graph *irg); void set_irg_end_except (ir_graph *irg, ir_node *node); - -/* @@@ oblivious, no more supported. */ -ir_node *get_irg_cstore (const ir_graph *irg); -void set_irg_cstore (ir_graph *irg, ir_node *node); -/* end oblivious */ - /** Returns the node that represents the frame pointer. */ ir_node *get_irg_frame (const ir_graph *irg); /** Sets the node that represents the frame pointer. */ @@ -226,6 +224,11 @@ ir_node *get_irg_globals (const ir_graph *irg); /** Sets the node that represents the global pointer. */ void set_irg_globals (ir_graph *irg, ir_node *node); +/** Returns the node that represents the tls pointer. */ +ir_node *get_irg_tls (const ir_graph *irg); +/** Sets the node that represents the tls pointer. */ +void set_irg_tls (ir_graph *irg, ir_node *node); + /** Returns the node that represents the initial memory. */ ir_node *get_irg_initial_mem (const ir_graph *irg); /** Sets the node that represents the initial memory. */ @@ -481,6 +484,9 @@ void *get_irg_loc_description(ir_graph *irg, int n); */ unsigned get_irg_estimated_node_cnt(const ir_graph *irg); +/** Returns the last irn index for this graph. */ +unsigned get_irg_last_idx(const ir_graph *irg); + /** * Access custom graph data. * The data must have been registered with @@ -511,4 +517,4 @@ unsigned get_irg_estimated_node_cnt(const ir_graph *irg); */ size_t register_additional_graph_data(size_t size); -# endif /* _IRGRAPH_H_ */ +#endif /* _FIRM_IR_IRGRAPH_H_ */