X-Git-Url: http://nsz.repo.hu/git/?a=blobdiff_plain;f=include%2Flibfirm%2Firnode.h;h=be09fdef324e2321f9d20c4097aaa9d1f9dcb3c8;hb=e350b484176725a82b3fce4ed2466a91c1b37f88;hp=f975c3728ddfa87cf81349837a5c2c93981ccd79;hpb=7cd2dbf37a3ced8d0113899618c88bc47eee0164;p=libfirm diff --git a/include/libfirm/irnode.h b/include/libfirm/irnode.h index f975c3728..be09fdef3 100644 --- a/include/libfirm/irnode.h +++ b/include/libfirm/irnode.h @@ -185,8 +185,6 @@ void del_Sync_n(ir_node *n, int i); void set_irn_mode(ir_node *node, ir_mode *mode); /** Gets the mode struct of a node. */ ir_mode *get_irn_mode(const ir_node *node); -/** Gets the mode-enum ir_modecode. */ -ir_modecode get_irn_modecode(const ir_node *node); /** Gets the ident for a string representation of the mode .*/ ident *get_irn_modeident(const ir_node *node); /** Gets the string representation of the mode .*/ @@ -304,11 +302,6 @@ void set_nodes_block (ir_node *node, ir_node *block); * get_irn_MacroBlock(). */ ir_node *get_nodes_MacroBlock(const ir_node *node); -/** - * @function get_irn_block() - * @see get_nodes_block() - */ - /** * Projection numbers for result of Start node: use for Proj nodes! */ @@ -419,12 +412,14 @@ void set_Block_MacroBlock(ir_node *block, ir_node *mbh); ir_node *get_irn_MacroBlock(const ir_node *n); /** Returns the ir_graph this Block belongs to. */ ir_graph *get_Block_irg(const ir_node *block); -/** Returns non-zero if the block has an assigned label. */ -int has_Block_label(const ir_node *block); -/** Returns the label of a Block. */ -ir_label_t get_Block_label(const ir_node *block); -/** Sets a label to a block. */ -void set_Block_label(ir_node *block, ir_label_t label); +/** Returns non-zero if the block has an entity assigned */ +int has_Block_entity(const ir_node *block); +/** Returns the entity for a Block */ +ir_entity *get_Block_entity(const ir_node *block); +/** Returns the entity for a Block (creating it if necessary) */ +ir_entity *create_Block_entity(ir_node *block); +/** Set a new entity for a block */ +void set_Block_entity(ir_node *block, ir_entity *entity); /** Gets the head of the Phi list for this block. */ ir_node *get_Block_phis(const ir_node *block); /** Sets the head of the Phi list for this block. */ @@ -552,9 +547,6 @@ void set_Const_type(ir_node *node, ir_type *tp); /** Returns non-zero if s symconst kind has an enum_const attribute */ #define SYMCONST_HAS_ENUM(kind) ((kind) == symconst_enum_const) -/** Returns non-zero if s symconst kind has a label attribute */ -#define SYMCONST_HAS_LABEL(kind) ((kind) == symconst_label) - /** Get the kind of the SymConst. */ symconst_kind get_SymConst_kind(const ir_node *node); /** Set the kind of the SymConst. */ @@ -583,11 +575,6 @@ union symconst_symbol get_SymConst_symbol(const ir_node *node); void set_SymConst_symbol(ir_node *node, union symconst_symbol sym); -/** Only to access SymConst of kind symconst_label. Else assertion: */ -ir_label_t get_SymConst_label(const ir_node *node); -void set_SymConst_label(ir_node *node, ir_label_t label); - - /** Access the type of the value represented by the SymConst. * * Example: primitive type int for SymConst size. */ @@ -621,9 +608,13 @@ typedef enum { } pn_Call; /* Projection numbers for Call. */ #define pn_Call_M pn_Call_M_regular +/** Retrieve the memory input of a Call. */ ir_node *get_Call_mem(const ir_node *node); +/** Set the memory input of a Call. */ void set_Call_mem(ir_node *node, ir_node *mem); +/** Retrieve the call address of a Call. */ ir_node *get_Call_ptr(const ir_node *node); +/** Set the call address of a Call. */ void set_Call_ptr(ir_node *node, ir_node *ptr); ir_node **get_Call_param_arr(ir_node *node); /** Gets the number of parameters of a call. */ @@ -697,9 +688,13 @@ void set_Builtin_type(ir_node *node, ir_type *tp); /** Returns a human readable string for the ir_builtin_kind. */ const char *get_builtin_kind_name(ir_builtin_kind kind); +/** Retrieve the call address of a CallBegin. */ ir_node *get_CallBegin_ptr(const ir_node *node); +/** Set the call address of a CallBegin. */ void set_CallBegin_ptr(ir_node *node, ir_node *ptr); +/** Retrieve the original Call node of a CallBegin. */ ir_node *get_CallBegin_call(const ir_node *node); +/** Set the original Call node of a CallBegin. */ void set_CallBegin_call(ir_node *node, ir_node *call); /* For unary and binary arithmetic operations the access to the @@ -727,6 +722,11 @@ void set_Carry_left(ir_node *node, ir_node *left); ir_node *get_Carry_right(const ir_node *node); void set_Carry_right(ir_node *node, ir_node *right); +ir_node *get_Borrow_left(const ir_node *node); +void set_Borrow_left(ir_node *node, ir_node *left); +ir_node *get_Borrow_right(const ir_node *node); +void set_Borrow_right(ir_node *node, ir_node *right); + ir_node *get_Sub_left(const ir_node *node); void set_Sub_left(ir_node *node, ir_node *left); ir_node *get_Sub_right(const ir_node *node); @@ -795,6 +795,7 @@ void set_Div_mem(ir_node *node, ir_node *mem); ir_mode *get_Div_resmode(const ir_node *node); void set_Div_resmode(ir_node *node, ir_mode *mode); int get_Div_no_remainder(const ir_node *node); +void set_Div_no_remainder(ir_node *node, int no_remainder); /** * Projection numbers for Div: use for Proj nodes! @@ -1173,7 +1174,7 @@ void set_Bound_upper(ir_node *bound, ir_node *upper); /** Return the operand of a Pin node. */ ir_node *get_Pin_op(const ir_node *pin); -void set_Pin_op(ir_node *pin, ir_node *node); +void set_Pin_op(ir_node *pin, ir_node *node); /** Return the assembler text of an ASM pseudo node. */ ident *get_ASM_text(const ir_node *node); @@ -1349,6 +1350,12 @@ ir_mode *get_divop_resmod(const ir_node *node); * operation: Cond. */ int is_irn_forking(const ir_node *node); +/** + * Copies all attributes stored in the old node to the new node. + * Assumes both have the same opcode and sufficient size. + */ +void copy_node_attr(const ir_node *old_node, ir_node *new_node); + /** Return the type associated with the value produced by n * if the node remarks this type as it is the case for * Cast, Const, SymConst and some Proj nodes or unknown_type. */