X-Git-Url: http://nsz.repo.hu/git/?a=blobdiff_plain;f=ir%2Fir%2Firnode_t.h;h=0f60161fd2677b712dde44a643f785e3fadab565;hb=672b5c243e900427b5dcae01441d4fa3327d692c;hp=3f040db6730693e57f029ab12f869db7908e54a6;hpb=e153c0201ad4b75fa63cacd746cf6295bde5cbdc;p=libfirm diff --git a/ir/ir/irnode_t.h b/ir/ir/irnode_t.h index 3f040db67..0f60161fd 100644 --- a/ir/ir/irnode_t.h +++ b/ir/ir/irnode_t.h @@ -1,5 +1,5 @@ /* - * Copyright (C) 1995-2007 University of Karlsruhe. All right reserved. + * Copyright (C) 1995-2008 University of Karlsruhe. All right reserved. * * This file is part of libFirm. * @@ -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); @@ -544,6 +547,12 @@ _is_Tuple(const ir_node *node) { return (_get_irn_op(node) == op_Tuple); } +static INLINE int +_is_Bound(const ir_node *node) { + assert(node); + return (_get_irn_op(node) == op_Bound); +} + static INLINE int _is_Start(const ir_node *node) { assert(node); @@ -791,6 +800,7 @@ _Block_block_visited(const ir_node *node) { static INLINE ir_node * _set_Block_dead(ir_node *block) { assert(_get_irn_op(block) == op_Block); + block->attr.block.dom.dom_depth = -1; block->attr.block.is_dead = 1; return block; } @@ -903,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) @@ -959,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) @@ -975,6 +1025,7 @@ static INLINE void _set_irn_dbg_info(ir_node *n, dbg_info *db) { #define is_Rot(node) _is_Rot(node) #define is_Psi(node) _is_Psi(node) #define is_Tuple(node) _is_Tuple(node) +#define is_Bound(node) _is_Bound(node) #define is_no_Block(node) _is_no_Block(node) #define is_Block(node) _is_Block(node) #define get_Block_n_cfgpreds(node) _get_Block_n_cfgpreds(node) @@ -1019,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