X-Git-Url: http://nsz.repo.hu/git/?a=blobdiff_plain;f=ir%2Fir%2Firnode_t.h;h=0f60161fd2677b712dde44a643f785e3fadab565;hb=672b5c243e900427b5dcae01441d4fa3327d692c;hp=11db681d4d58949b78c84274cc0bb148ba80af9f;hpb=f0543263df9b59c3d34ab1b0d4d7d925cd3c1c69;p=libfirm diff --git a/ir/ir/irnode_t.h b/ir/ir/irnode_t.h index 11db681d4..0f60161fd 100644 --- a/ir/ir/irnode_t.h +++ b/ir/ir/irnode_t.h @@ -46,18 +46,19 @@ ir_node **get_irn_in (const ir_node *node); /** @{ */ /** access attributes directly */ const_attr *get_irn_const_attr (ir_node *node); -long get_irn_proj_attr (ir_node *node); +long get_irn_proj_attr (ir_node *node); alloc_attr *get_irn_alloc_attr (ir_node *node); free_attr *get_irn_free_attr (ir_node *node); symconst_attr *get_irn_symconst_attr (ir_node *node); ir_type *get_irn_call_attr (ir_node *node); ir_type *get_irn_funccall_attr (ir_node *node); sel_attr *get_irn_sel_attr (ir_node *node); -int get_irn_phi0_attr (ir_node *node); +phi_attr *get_irn_phi_attr (ir_node *node); block_attr *get_irn_block_attr (ir_node *node); load_attr *get_irn_load_attr (ir_node *node); store_attr *get_irn_store_attr (ir_node *node); except_attr *get_irn_except_attr (ir_node *node); +divmod_attr *get_irn_divmod_attr (ir_node *node); /** @} */ /** @@ -357,11 +358,7 @@ _irn_not_visited(const ir_node *node) { */ static INLINE void _set_irn_link(ir_node *node, void *link) { - assert(node); - /* Link field is used for Phi construction and various optimizations - in iropt. */ - assert(get_irg_phase_state(get_irn_irg(node)) != phase_building); - + assert(node); node->link = link; } @@ -448,6 +445,12 @@ _is_Minus(const ir_node *node) { return (_get_irn_op(node) == op_Minus); } +static INLINE int +_is_Abs(const ir_node *node) { + assert(node); + return (_get_irn_op(node) == op_Abs); +} + static INLINE int _is_Mod(const ir_node *node) { assert(node); @@ -910,6 +913,45 @@ static INLINE void _set_irn_dbg_info(ir_node *n, dbg_info *db) { n->dbi = db; } +/** + * Sets the Phi list of a block. + */ +static INLINE void +_set_Block_phis(ir_node *block, ir_node *phi) { + assert(_is_Block(block)); + assert(phi == NULL || _is_Phi(phi)); + block->attr.block.phis = phi; +} + +/** + * Returns the link of a node. + * Intern version of libFirm. + */ +static INLINE ir_node * +_get_Block_phis(const ir_node *block) { + assert(_is_Block(block)); + return block->attr.block.phis; +} + +/** + * Sets the next link of a Phi. + */ +static INLINE void +_set_Phi_next(ir_node *phi, ir_node *next) { + assert(_is_Phi(phi)); + phi->attr.phi.next = next; +} + +/** + * Returns the link of a node. + * Intern version of libFirm. + */ +static INLINE ir_node * +_get_Phi_next(const ir_node *phi) { + assert(_is_Phi(phi)); + return phi->attr.phi.next; +} + /* this section MUST contain all inline functions */ #define is_ir_node(thing) _is_ir_node(thing) #define get_irn_intra_arity(node) _get_irn_intra_arity(node) @@ -966,6 +1008,7 @@ static INLINE void _set_irn_dbg_info(ir_node *n, dbg_info *db) { #define is_Start(node) _is_Start(node) #define is_End(node) _is_End(node) #define is_Minus(node) _is_Minus(node) +#define is_Abs(node) _is_Abs(node) #define is_Mod(node) _is_Mod(node) #define is_Div(node) _is_Div(node) #define is_DivMod(node) _is_DivMod(node) @@ -1027,4 +1070,9 @@ static INLINE void _set_irn_dbg_info(ir_node *n, dbg_info *db) { #define get_irn_dbg_info(node) _get_irn_dbg_info(node) #define set_irn_dbg_info(node, db) _set_irn_dbg_info(node, db) +#define set_Block_phis(node, phi) _set_Block_phis(node, phi) +#define get_Block_phis(node) _get_Block_phis(node) +#define set_Phi_next(node, phi) _set_Phi_next(node, phi) +#define get_Phi_next(node) _get_Phi_next(node) + #endif