X-Git-Url: http://nsz.repo.hu/git/?a=blobdiff_plain;f=include%2Flibfirm%2Fircons.h;h=adfa04de8a0a7d62c8c7dd9b4696772e65366706;hb=5bfb295525b0e0811b61106bb47375e2aaf77c54;hp=62483a74261355d1006af27e0ff594c95a8e8a5f;hpb=d59632bf0674cdc39986c92ebb882a92be68193a;p=libfirm diff --git a/include/libfirm/ircons.h b/include/libfirm/ircons.h index 62483a742..adfa04de8 100644 --- a/include/libfirm/ircons.h +++ b/include/libfirm/ircons.h @@ -327,7 +327,6 @@ * All ir_nodes are defined by a common data structure. They are distinguished * by their opcode and differ in the number of their attributes. * - * The constructor for the block node sets current_block to itself. * Const nodes are always added to the start block. * All other constructors add the created node to the current_block. * swich_block(block) allows to set the current block to block. @@ -543,24 +542,12 @@ * symconst_type_tag The symbolic constant represents a type tag. * symconst_type_size The symbolic constant represents the size of a type. * symconst_type_align The symbolic constant represents the alignment of a type. - * symconst_addr_name Information for the linker, e.g. the name of a global - * variable. * symconst_addr_ent The symbolic constant represents the address of an entity. * symconst_ofs_ent The symbolic constant represents the offset of an * entity in its owner type. * symconst_enum_const The symbolic constant is a enumeration constant of an * enumeration type. * - * To represent a pointer to an entity that is represented by an entity - * datastructure don't use - * sym.ident_p = get_entity_ld_ident(ent); - * new_SymConst(mode_P, sym, symconst_addr_name);. - * Use a real const instead: - * sym.entity_p = ent; - * new_SymConst(mode_P, sym, symconst_addr_ent); - * This makes the constant independent of name changes of the entity due to - * mangling. - * * Parameters * mode P for SymConsts representing addresses, Iu otherwise. * value The type, ident, entity or enum constant, depending on the @@ -577,7 +564,6 @@ * -symconst_type_tag * -symconst_type_size * -symconst_type_align - * -symconst_addr_name * -symconst_addr_ent * * If the attr.i.num is symconst_type_tag, symconst_type_size or symconst_type_align, @@ -1166,11 +1152,7 @@ typedef enum ir_cons_flags { /** Constructor for a Block node. * - * Constructs a mature block with the given predecessors. Use Unknown - * nodes as predecessors to construct a block if the number of - * predecessors is known, but not the predecessors themselves. This - * constructor does not set current_block. It not be used with - * automatic Phi node construction. + * Constructs a mature block with the given predecessors. * * @param *db A Pointer for debug information. * @param irg The IR graph the block belongs to. @@ -1288,7 +1270,8 @@ ir_node *new_rd_Const_type(dbg_info *db, ir_graph *irg, */ ir_node *new_rd_Const(dbg_info *db, ir_graph *irg, tarval *con); -/** Constructor for a Const node. +/** + * Constructor for a Const node. * * Adds the node to the start block. * @@ -1316,9 +1299,6 @@ ir_node *new_rd_Const_long(dbg_info *db, ir_graph *irg, * - symconst_type_align The symbolic constant represents the alignment of a * type. The type of which the constant represents the * size is given explicitly. - * - symconst_addr_name The symbolic constant represents the address of an - * entity (variable or method). The variable is - * indicated by a name that is valid for linking. * - symconst_addr_ent The symbolic constant represents the address of an * entity (variable or method). The variable is given * explicitly by a firm entity. @@ -1371,15 +1351,6 @@ ir_node *new_rd_SymConst_addr_ent(dbg_info *db, ir_graph *irg, ir_mode *mode, ir_node *new_rd_SymConst_ofs_ent(dbg_info *db, ir_graph *irg, ir_mode *mode, ir_entity *symbol, ir_type *tp); -/** Constructor for a SymConst addr_name node. - * - * Same as new_rd_SymConst_type, except that the constructor is tailored for - * symconst_addr_name. - * Adds the SymConst to the start block of irg. - */ -ir_node *new_rd_SymConst_addr_name(dbg_info *db, ir_graph *irg, ir_mode *mode, - ident *symbol, ir_type *tp); - /** Constructor for a SymConst type_tag node. * * Same as new_rd_SymConst_type, except that the constructor is tailored for @@ -1837,25 +1808,21 @@ ir_node *new_rd_Sync(dbg_info *db, ir_node *block, int arity, ir_node *in[]); * position of the value within the tuple. * * @param *db A pointer for debug information. - * @param *block The IR block the node belongs to. * @param arg A node producing a tuple. The node must have mode_T. * @param *mode The mode of the value to project. * @param proj The position of the value in the tuple. */ -ir_node *new_rd_Proj(dbg_info *db, ir_node *block, ir_node *arg, - ir_mode *mode, long proj); +ir_node *new_rd_Proj(dbg_info *db, ir_node *arg, ir_mode *mode, long proj); /** Constructor for a defaultProj node. * * Represents the default control flow of a Switch-Cond node. * * @param *db A pointer for debug information. - * @param *block The IR block the node belongs to. * @param arg A node producing a tuple. * @param max_proj The end position of the value in the tuple. */ -ir_node *new_rd_defaultProj(dbg_info *db, ir_node *block, - ir_node *arg, long max_proj); +ir_node *new_rd_defaultProj(dbg_info *db, ir_node *arg, long max_proj); /** Constructor for a Tuple node. * @@ -1919,7 +1886,8 @@ ir_node *new_rd_Unknown(dbg_info *db, ir_graph *irg, ir_mode *m); * * @param *db A pointer for debug information. * @param *block The block the node belong to. - * @param *callee The call node visible in the intra procedural view. + * @param *ptr pointer to the called function + * @param *call associated call operation */ ir_node *new_rd_CallBegin(dbg_info *db, ir_node *block, ir_node *ptr, ir_node *call); @@ -2184,9 +2152,6 @@ ir_node *new_r_Const_type(ir_graph *irg, tarval *con, ir_type *tp); * - symconst_type_align The symbolic constant represents the alignment of a * type. The type of which the constant represents the * size is given explicitly. - * - symconst_addr_name The symbolic constant represents the address of an - * entity (variable or method). The variable is - * indicated by a name that is valid for linking. * - symconst_addr_ent The symbolic constant represents the address of an * entity (variable or method). The variable is given * explicitly by a firm entity. @@ -2593,23 +2558,20 @@ ir_node *new_r_Sync(ir_node *block, int arity, ir_node *in[]); * Projects a single value out of a tuple. The parameter proj gives the * position of the value within the tuple. * - * @param *block The IR block the node belongs to. * @param arg A node producing a tuple. - * @param *mode The mode of the value to project. + * @param mode The mode of the value to project. * @param proj The position of the value in the tuple. */ -ir_node *new_r_Proj(ir_node *block, ir_node *arg, - ir_mode *mode, long proj); +ir_node *new_r_Proj(ir_node *arg, ir_mode *mode, long proj); /** Constructor for a defaultProj node. * * Represents the default control flow of a Switch-Cond node. * - * @param *block The IR block the node belongs to. * @param arg A node producing a tuple. * @param max_proj The end position of the value in the tuple. */ -ir_node *new_r_defaultProj(ir_node *block, ir_node *arg, long max_proj); +ir_node *new_r_defaultProj(ir_node *arg, long max_proj); /** Constructor for a Tuple node. @@ -2676,7 +2638,8 @@ ir_node *new_r_Unknown(ir_graph *irg, ir_mode *m); * node. * * @param *block The block the node belong to. - * @param *callee The call node visible in the intra procedural view. + * @param *ptr pointer to the called function + * @param *call associated call operation */ ir_node *new_r_CallBegin(ir_node *block, ir_node *ptr, ir_node *call); @@ -2832,17 +2795,10 @@ void set_cur_block(ir_node *target); /** Returns the current block of the current graph. */ ir_node *get_cur_block(void); -/** Returns the fixed nodes of the current graph. */ -#define get_cur_end_block() get_irg_end_block(current_ir_graph) -#define get_cur_end() get_irg_end(current_ir_graph) -#define get_cur_start_block() get_irg_start_block(current_ir_graph) -#define get_cur_start() get_irg_start(current_ir_graph) - /** Constructor for a Block node. * * Adds the block to the graph in current_ir_graph. Constructs a Block - * with a fixed number of predecessors. Does set current_block. Can - * be used with automatic Phi node construction. + * with a fixed number of predecessors. * * @param *db A Pointer for debug information. * @param arity The number of control predecessors. @@ -2947,6 +2903,15 @@ ir_node *new_d_Const_type(dbg_info *db, tarval *con, ir_type *tp); */ ir_node *new_d_Const(dbg_info *db, tarval *con); +/** + * @see new_rd_Const_long() + * + * @param *db A pointer for debug information. + * @param *mode The mode of the operands and results. + * @param value A value from which the tarval is made. + */ +ir_node *new_d_Const_long(dbg_info *db, ir_mode *mode, long value); + /** Constructor for a SymConst_type node. * * This is the constructor for a symbolic constant. @@ -2959,9 +2924,6 @@ ir_node *new_d_Const(dbg_info *db, tarval *con); * - symconst_type_align The symbolic constant represents the alignment of a * type. The type of which the constant represents the * size is given explicitly. - * - symconst_addr_name The symbolic constant represents the address of an - * entity (variable or method). The variable is - * indicated by a name that is valid for linking. * - symconst_addr_ent The symbolic constant represents the address of an * entity (variable or method). The variable is given * explicitly by a firm entity. @@ -3499,7 +3461,8 @@ ir_node *new_d_Unknown(dbg_info *db, ir_mode *m); * node.Adds the node to the block in current_ir_block. * * @param *db A pointer for debug information. - * @param *callee The call node visible in the intra procedural view. + * @param *ptr pointer to the called function + * @param *call associated call operation */ ir_node *new_d_CallBegin(dbg_info *db, ir_node *ptr, ir_node *call); @@ -3635,15 +3598,10 @@ ir_node *new_d_ASM(dbg_info *db, int arity, ir_node *in[], ir_asm_constraint *in /* The block oriented interface without debug support */ /*-----------------------------------------------------------------------*/ -/* Needed from the interface with debug support: -void set_cur_block (ir_node *target); */ - /** Constructor for a Block node. * * Constructor for a Block node. Adds the block to the graph in - * current_ir_graph. Constructs a Block with a fixed number of - * predecessors. Does set current_block. Can be used with automatic - * Phi node construction. + * current_ir_graph. Constructs a Block with a fixed number of predecessors. * * @param arity The number of control predecessors. * @param in An array of control predecessors. The length of @@ -3772,9 +3730,6 @@ ir_node *new_Const_type(tarval *con, ir_type *tp); * - symconst_type_align The symbolic constant represents the alignment of a * type. The type of which the constant represents the * size is given explicitly. - * - symconst_addr_name The symbolic constant represents the address of an - * entity (variable or method). The variable is - * indicated by a name that is valid for linking. * - symconst_addr_ent The symbolic constant represents the address of an * entity (variable or method). The variable is given * explicitly by a firm entity. @@ -3811,9 +3766,6 @@ ir_node *new_SymConst_type(ir_mode *mode, union symconst_symbol value, symconst_ * - symconst_type_align The symbolic constant represents the alignment of a * type. The type of which the constant represents the * size is given explicitly. - * - symconst_addr_name The symbolic constant represents the address of an - * entity (variable or method). The variable is - * indicated by a name that is valid for linking. * - symconst_addr_ent The symbolic constant represents the address of an * entity (variable or method). The variable is given * explicitly by a firm entity. @@ -3905,7 +3857,8 @@ ir_node *new_Builtin(ir_node *store, int arity, ir_node *in[], * constructor copies the method pointer input from the passed Call * node. Adds the node to the block in current_ir_block. * - * @param *callee A pointer to the called procedure. + * @param *ptr pointer to the called function + * @param *call associated call operation */ ir_node *new_CallBegin(ir_node *ptr, ir_node *call); @@ -4400,15 +4353,41 @@ ir_node *new_ASM(int arity, ir_node *in[], ir_asm_constraint *inputs, int n_outs, ir_asm_constraint *outputs, int n_clobber, ident *clobber[], ident *asm_text); -/** Constructor for a Dummy node. +/** + * @brief Constructor for a Dummy node. * + * @param *db debug info for the node * @param *mode The mode of the node. + * @param *irg the graph to put the node into + * @returns the newly created note */ -ir_node *new_Dummy(ir_mode *mode); +ir_node *new_rd_Dummy(dbg_info *db, ir_graph *irg, ir_mode *mode); +/** + * @copybrief new_rd_Dummy() + * + * @param *mode The mode of the node. + * @param *irg the graph to put the node into + * @returns the newly created note + */ ir_node *new_r_Dummy(ir_graph *irg, ir_mode *mode); -ir_node *new_rd_Dummy(dbg_info *db, ir_graph *irg, ir_mode *mode); +/** + * @copybrief new_rd_Dummy() + * + * @param *db debug info for the node + * @param *mode The mode of the node. + * @returns the newly created note + */ +ir_node *new_d_Dummy(dbg_info *db, ir_mode *mode); + +/** + * @copybrief new_rd_Dummy() + * + * @param *mode The mode of the node. + * @returns the newly created note + */ +ir_node *new_Dummy(ir_mode *mode); /*---------------------------------------------------------------------*/ /* The comfortable interface. */ @@ -4477,15 +4456,13 @@ ir_node *get_value(int pos, ir_mode *mode); */ void set_value(int pos, ir_node *value); -/** Find the value number for a node in the current block. +/** + * Find the value number for a node in the current block. * - * This function searches all values in the current block for - * a given value and returns its value number if it was found, else - * -1. - * Note that this does not mean that the value does not exists, - * it's just not equal the node (for instance behind a Phi/Confirm ...) + * @param value the searched value * - * @param *value The value to find. + * @return the value number of the value or -1 if this value has + * no value number in the current block. */ int find_value(ir_node *value);