X-Git-Url: http://nsz.repo.hu/git/?a=blobdiff_plain;f=include%2Flibfirm%2Fircons.h;h=64e97065dd28afa6e226133a8ad46d5410f01e09;hb=e44426021b5f23c05bcae04ee99d1e7afdd71b82;hp=4533a963137b60ae8483524a6e99fc5441cec6ee;hpb=e36a82c5aafb53c1b28723c88db898f8ccc3e6bb;p=libfirm diff --git a/include/libfirm/ircons.h b/include/libfirm/ircons.h index 4533a9631..64e97065d 100644 --- a/include/libfirm/ircons.h +++ b/include/libfirm/ircons.h @@ -254,7 +254,7 @@ * ir_node *new_IJmp (ir_node *tgt); * ir_node *new_Cond (ir_node *c); * ir_node *new_Return (ir_node *store, int arity, ir_node **in); - * ir_node *new_Const (tarval *con); + * ir_node *new_Const (ir_tarval *con); * ir_node *new_SymConst (ir_mode *mode, symconst_symbol value, symconst_kind kind); * ir_node *new_simpleSel (ir_node *store, ir_node *objptr, ir_entity *ent); * ir_node *new_Sel (ir_node *store, ir_node *objptr, int arity, @@ -501,7 +501,7 @@ * Control flow to the end block. * * - * ir_node *new_Const (tarval *con) + * ir_node *new_Const (ir_tarval *con) * ----------------------------------------------- * * Creates a constant in the constant table and adds a Const node @@ -1127,6 +1127,7 @@ typedef enum ir_cons_flags { cons_unaligned = 1U << 1, /**< Memory operation is unaligned. */ cons_floats = 1U << 2 /**< Memory operation can float. */ } ir_cons_flags; +ENUM_BITSET(ir_cons_flags) /*-------------------------------------------------------------------------*/ /* The raw interface */ @@ -1156,7 +1157,7 @@ FIRM_API ir_node *new_rd_Start(dbg_info *db, ir_graph *irg); * @param *db A pointer for debug information. * @param *irg The IR graph the node belongs to. */ -FIRM_API ir_node *new_rd_End(dbg_info *db, ir_graph *irg); +FIRM_API ir_node *new_rd_End(dbg_info *db, ir_graph *irg, int arity, ir_node *in[]); /** Constructor for a Jmp node. * @@ -1207,22 +1208,6 @@ FIRM_API ir_node *new_rd_Cond(dbg_info *db, ir_node *block, ir_node *c); FIRM_API ir_node *new_rd_Return(dbg_info *db, ir_node *block, ir_node *store, int arity, ir_node *in[]); -/** Constructor for a Const_type node. - * - * Adds the node to the start block. - * - * The constant represents a target value. This constructor sets high - * level type information for the constant value. - * Derives mode from passed tarval. - * - * @param *db A pointer for debug information. - * @param *irg The IR graph the node belongs to. - * @param *con Points to an entry in the constant table. - * @param *tp The type of the constant. - */ -FIRM_API ir_node *new_rd_Const_type(dbg_info *db, ir_graph *irg, - tarval *con, ir_type *tp); - /** Constructor for a Const node. * * Adds the node to the start block. @@ -1236,7 +1221,7 @@ FIRM_API ir_node *new_rd_Const_type(dbg_info *db, ir_graph *irg, * @param *irg The IR graph the node belongs to. * @param *con Points to an entry in the constant table. */ -FIRM_API ir_node *new_rd_Const(dbg_info *db, ir_graph *irg, tarval *con); +FIRM_API ir_node *new_rd_Const(dbg_info *db, ir_graph *irg, ir_tarval *con); /** * Constructor for a Const node. @@ -1255,7 +1240,7 @@ FIRM_API ir_node *new_rd_Const(dbg_info *db, ir_graph *irg, tarval *con); FIRM_API ir_node *new_rd_Const_long(dbg_info *db, ir_graph *irg, ir_mode *mode, long value); -/** Constructor for a SymConst_type node. +/** Constructor for a SymConst node. * * This is the constructor for a symbolic constant. * There are several kinds of symbolic constants: @@ -1289,15 +1274,6 @@ FIRM_API ir_node *new_rd_Const_long(dbg_info *db, ir_graph *irg, * @param val A type, ident, entity or enum constant depending on the * SymConst kind. * @param kind The kind of the symbolic constant, see the list above - * @param tp The source type of the constant. - */ -FIRM_API ir_node *new_rd_SymConst_type(dbg_info *db, ir_graph *irg, - ir_mode *mode, union symconst_symbol val, - symconst_kind kind, ir_type *tp); - -/** Constructor for a SymConst node. - * - * Same as new_rd_SymConst_type, except that it sets the type to type_unknown. */ FIRM_API ir_node *new_rd_SymConst(dbg_info *db, ir_graph *irg, ir_mode *mode, union symconst_symbol value, @@ -1305,51 +1281,46 @@ FIRM_API ir_node *new_rd_SymConst(dbg_info *db, ir_graph *irg, ir_mode *mode, /** Constructor for a SymConst addr_ent node. * - * Same as new_rd_SymConst_type, except that the constructor is tailored for + * Same as new_rd_SymConst, except that the constructor is tailored for * symconst_addr_ent. * Adds the SymConst to the start block of irg. */ FIRM_API ir_node *new_rd_SymConst_addr_ent(dbg_info *db, ir_graph *irg, - ir_mode *mode, ir_entity *symbol, - ir_type *tp); + ir_mode *mode, ir_entity *symbol); /** Constructor for a SymConst ofs_ent node. * - * Same as new_rd_SymConst_type, except that the constructor is tailored for + * Same as new_rd_SymConst, except that the constructor is tailored for * symconst_ofs_ent. * Adds the SymConst to the start block of irg. */ FIRM_API ir_node *new_rd_SymConst_ofs_ent(dbg_info *db, ir_graph *irg, - ir_mode *mode, ir_entity *symbol, - ir_type *tp); + ir_mode *mode, ir_entity *symbol); /** Constructor for a SymConst type_tag node. * - * Same as new_rd_SymConst_type, except that the constructor is tailored for + * Same as new_rd_SymConst, except that the constructor is tailored for * symconst_type_tag. * Adds the SymConst to the start block of irg. */ FIRM_API ir_node *new_rd_SymConst_type_tag(dbg_info *db, ir_graph *irg, - ir_mode *mode, ir_type *symbol, - ir_type *tp); + ir_mode *mode, ir_type *symbol); /** Constructor for a SymConst size node. * - * Same as new_rd_SymConst_type, except that the constructor is tailored for + * Same as new_rd_SymConst, except that the constructor is tailored for * symconst_type_size. * Adds the SymConst to the start block of irg. */ FIRM_API ir_node *new_rd_SymConst_size(dbg_info *db, ir_graph *irg, - ir_mode *mode, ir_type *symbol, - ir_type *tp); + ir_mode *mode, ir_type *symbol); /** Constructor for a SymConst size node. * - * Same as new_rd_SymConst_type, except that the constructor is tailored for + * Same as new_rd_SymConst, except that the constructor is tailored for * symconst_type_align. * Adds the SymConst to the start block of irg. */ FIRM_API ir_node *new_rd_SymConst_align(dbg_info *db, ir_graph *irg, - ir_mode *mode, ir_type *symbol, - ir_type *tp); + ir_mode *mode, ir_type *symbol); /** Constructor for a simpleSel node. * @@ -1835,6 +1806,13 @@ FIRM_API ir_node *new_rd_Tuple(dbg_info *db, ir_node *block, FIRM_API ir_node *new_rd_Id(dbg_info *db, ir_node *block, ir_node *val, ir_mode *mode); +/** Constructor for a Bad node. + * + * @param *db A pointer for debug information. + * @param *irg The IR graph the node belongs to. + */ +FIRM_API ir_node *new_rd_Bad(dbg_info *db, ir_graph *irg); + /** Constructor for a Confirm node. * * Specifies constraints for a value. To support dataflow analyses. @@ -1861,6 +1839,13 @@ FIRM_API ir_node *new_rd_Confirm(dbg_info *db, ir_node *block, */ FIRM_API ir_node *new_rd_Unknown(dbg_info *db, ir_graph *irg, ir_mode *m); +/** Constructor for a NoMem node. + * + * @param *db A pointer for debug information. + * @param *irg The IR graph the node belongs to. + */ +FIRM_API ir_node *new_rd_NoMem(dbg_info *db, ir_graph *irg); + /** Constructor for a Mux node. * * @param *db A pointer for debug information. @@ -1977,7 +1962,7 @@ FIRM_API ir_node *new_r_Block(ir_graph *irg, int arity, ir_node *in[]); FIRM_API ir_node *new_r_Start(ir_graph *irg); /** Constructor for a End node. */ -FIRM_API ir_node *new_r_End(ir_graph *irg); +FIRM_API ir_node *new_r_End(ir_graph *irg, int arity, ir_node *in[]); /** Constructor for a Jmp node. * @@ -2036,7 +2021,7 @@ FIRM_API ir_node *new_r_Return(ir_node *block, ir_node *store, * @param *irg The IR graph the node belongs to. * @param *con Points to an entry in the constant table. */ -FIRM_API ir_node *new_r_Const(ir_graph *irg, tarval *con); +FIRM_API ir_node *new_r_Const(ir_graph *irg, ir_tarval *con); /** Constructor for a Const node. * @@ -2052,20 +2037,6 @@ FIRM_API ir_node *new_r_Const(ir_graph *irg, tarval *con); */ FIRM_API ir_node *new_r_Const_long(ir_graph *irg, ir_mode *mode, long value); -/** Constructor for a Const_type node. - * - * Adds the node to the start block. - * - * The constant represents a target value. This constructor sets high - * level type information for the constant value. - * Derives mode from passed tarval. - * - * @param *irg The IR graph the node belongs to. - * @param *con Points to an entry in the constant table. - * @param *tp The type of the constant. - */ -FIRM_API ir_node *new_r_Const_type(ir_graph *irg, tarval *con, ir_type *tp); - /** Constructor for a SymConst node. * * This is the constructor for a symbolic constant. @@ -2540,9 +2511,6 @@ FIRM_API ir_node *new_r_Tuple(ir_node *block, int arity, ir_node *in[]); FIRM_API ir_node *new_r_Id(ir_node *block, ir_node *val, ir_mode *mode); /** Constructor for a Bad node. - * - * Returns the unique Bad node of the graph. The same as - * get_irg_bad(). * * @param *irg The IR graph the node belongs to. */ @@ -2574,9 +2542,6 @@ FIRM_API ir_node *new_r_Confirm(ir_node *block, ir_node *val, ir_node *bound, FIRM_API ir_node *new_r_Unknown(ir_graph *irg, ir_mode *m); /** Constructor for a NoMem node. - * - * Returns the unique NoMem node of the graph. The same as - * get_irg_no_mem(). * * @param *irg The IR graph the node belongs to. */ @@ -2706,7 +2671,7 @@ FIRM_API ir_node *new_d_Start(dbg_info *db); * * @param *db A pointer for debug information. */ -FIRM_API ir_node *new_d_End(dbg_info *db); +FIRM_API ir_node *new_d_End(dbg_info *db, int arity, ir_node *in[]); /** Constructor for a Jmp node. * @@ -2759,21 +2724,6 @@ FIRM_API ir_node *new_d_Cond(dbg_info *db, ir_node *c); FIRM_API ir_node *new_d_Return(dbg_info *db, ir_node *store, int arity, ir_node *in[]); -/** Constructor for a Const_type node. - * - * Adds the node to the start block. - * - * The constant represents a target value. This constructor sets high - * level type information for the constant value. - * Derives mode from passed tarval. - * - * @param *db A pointer for debug information. - * @param *con Points to an entry in the constant table. This pointer is - added to the attributes of the node. - * @param *tp The type of the constant. - */ -FIRM_API ir_node *new_d_Const_type(dbg_info *db, tarval *con, ir_type *tp); - /** Constructor for a Const node. * * Adds the node to the block in current_ir_block. @@ -2787,7 +2737,7 @@ FIRM_API ir_node *new_d_Const_type(dbg_info *db, tarval *con, ir_type *tp); * @param *con Points to an entry in the constant table. This pointer is added * to the attributes of the node. */ -FIRM_API ir_node *new_d_Const(dbg_info *db, tarval *con); +FIRM_API ir_node *new_d_Const(dbg_info *db, ir_tarval *con); /** * @see new_rd_Const_long() @@ -2798,7 +2748,7 @@ FIRM_API ir_node *new_d_Const(dbg_info *db, tarval *con); */ FIRM_API ir_node *new_d_Const_long(dbg_info *db, ir_mode *mode, long value); -/** Constructor for a SymConst_type node. +/** Constructor for a SymConst node. * * This is the constructor for a symbolic constant. * There are several kinds of symbolic constants: @@ -2831,15 +2781,6 @@ FIRM_API ir_node *new_d_Const_long(dbg_info *db, ir_mode *mode, long value); * @param value A type, ident, entity or enum constant depending on the * SymConst kind. * @param kind The kind of the symbolic constant, see the list above - * @param tp The source type of the constant. - */ -FIRM_API ir_node *new_d_SymConst_type(dbg_info *db, ir_mode *mode, - union symconst_symbol value, - symconst_kind kind, ir_type *tp); - -/** Constructor for a SymConst node. - * - * Same as new_d_SymConst_type, except that it sets the type to type_unknown. */ FIRM_API ir_node *new_d_SymConst(dbg_info *db, ir_mode *mode, union symconst_symbol value, @@ -3335,6 +3276,12 @@ FIRM_API ir_node *new_d_Tuple(dbg_info *db, int arity, ir_node *in[]); */ FIRM_API ir_node *new_d_Id(dbg_info *db, ir_node *val, ir_mode *mode); +/** Constructor for a Bad node. + * + * @param *db A pointer for debug information. + */ +FIRM_API ir_node *new_d_Bad(dbg_info *db); + /** Constructor for a Confirm node. * * Constructor for a Confirm node. Adds the node to the block in current_ir_block. @@ -3361,6 +3308,12 @@ FIRM_API ir_node *new_d_Confirm(dbg_info *db, ir_node *val, ir_node *bound, */ FIRM_API ir_node *new_d_Unknown(dbg_info *db, ir_mode *m); +/** Constructor for a NoMem node. + * + * @param *db A pointer for debug information. + */ +FIRM_API ir_node *new_d_NoMem(dbg_info *db); + /** Constructor for a Mux node. * * @param *db A pointer for debug information. @@ -3469,7 +3422,7 @@ FIRM_API ir_node *new_Start(void); * * Adds the node to the block in current_ir_block. */ -FIRM_API ir_node *new_End(void); +FIRM_API ir_node *new_End(int arity, ir_node *in[]); /** Constructor for a Jump node. * @@ -3524,7 +3477,7 @@ FIRM_API ir_node *new_Return(ir_node *store, int arity, ir_node *in[]); * @param *con Points to an entry in the constant table. This pointer is * added to the attributes of the node. */ -FIRM_API ir_node *new_Const(tarval *con); +FIRM_API ir_node *new_Const(ir_tarval *con); /** * Make a const from a long. @@ -3539,48 +3492,6 @@ FIRM_API ir_node *new_Const(tarval *con); */ FIRM_API ir_node *new_Const_long(ir_mode *mode, long value); -/** Constructor for a Const node. - * - * Derives mode from passed tarval. */ -FIRM_API ir_node *new_Const_type(tarval *con, ir_type *tp); - -/** Constructor for a SymConst_type node. - * - * This is the constructor for a symbolic constant. - * There are several kinds of symbolic constants: - * - symconst_type_tag The symbolic constant represents a type tag. The - * type the tag stands for is given explicitly. - * - symconst_type_size The symbolic constant represents the size of a type. - * The type of which the constant represents the size - * is given explicitly. - * - 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_ent The symbolic constant represents the address of an - * entity (variable or method). The variable is given - * explicitly by a firm 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. - * - * Inputs to the node: - * No inputs except the block it belongs to. - * Outputs of the node. - * An unsigned integer (I_u) or a pointer (P). - * - * Mention union in declaration so that the firmjni generator recognizes that - * it can not cast the argument to an int. - * - * @param mode The mode for the SymConst. - * @param value A type, ident, entity or enum constant depending on the - * SymConst kind. - * @param kind The kind of the symbolic constant, see the list above - * @param tp The source type of the constant. - */ -FIRM_API ir_node *new_SymConst_type(ir_mode *mode, union symconst_symbol value, - symconst_kind kind, ir_type *tp); - /** Constructor for a SymConst node. * * This is the constructor for a symbolic constant. @@ -4039,9 +3950,6 @@ FIRM_API ir_node *new_Tuple(int arity, ir_node *in[]); FIRM_API ir_node *new_Id(ir_node *val, ir_mode *mode); /** Constructor for a Bad node. - * - * Returns the unique Bad node of the graph. The same as - * get_irg_bad(). */ FIRM_API ir_node *new_Bad(void); @@ -4068,11 +3976,7 @@ FIRM_API ir_node *new_Confirm(ir_node *val, ir_node *bound, pn_Cmp cmp); */ FIRM_API ir_node *new_Unknown(ir_mode *m); -/** Constructor for a NoMem node. - * - * Returns the unique NoMem node of the graph. The same as - * get_irg_no_mem(). - */ +/** Constructor for a NoMem node. */ FIRM_API ir_node *new_NoMem(void); /** Constructor for a Mux node.