X-Git-Url: http://nsz.repo.hu/git/?a=blobdiff_plain;f=ir%2Fir%2Firnode_t.h;h=5d3e42ee5c118abcd06c9dbedf21f80d859c9efc;hb=8f355cb9b3d20c10f71d1b1e17cbf59a51ced83b;hp=34da5e2ef8de8aa43153da7a64b839f2898640eb;hpb=d9ad2dc15113a8704d577d733c1a2f8076d215cd;p=libfirm diff --git a/ir/ir/irnode_t.h b/ir/ir/irnode_t.h index 34da5e2ef..5d3e42ee5 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. * @@ -226,6 +226,14 @@ _get_irn_inter_n(const ir_node *node, int n) { return _get_irn_intra_n(node, n); } +/** + * returns a hash value for a node + */ +static INLINE unsigned hash_irn(const ir_node *node) +{ + return (unsigned) get_irn_idx(node); +} + /** * Access to the predecessors of a node. * To iterate over the operands iterate from 0 to i < get_irn_arity(), @@ -536,6 +544,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); @@ -560,6 +574,11 @@ _is_Conv(const ir_node *node) { return (_get_irn_op(node) == op_Conv); } +static INLINE int +_is_strictConv(const ir_node *node) { + return _is_Conv(node) && get_Conv_strict(node); +} + static INLINE int _is_Cast(const ir_node *node) { assert(node); @@ -654,6 +673,11 @@ _is_SymConst(const ir_node *node) { return (_get_irn_op(node) == op_SymConst); } +static INLINE int +_is_SymConst_addr_ent(const ir_node *node) { + return is_SymConst(node) && get_SymConst_kind(node) == symconst_addr_ent; +} + static INLINE int _is_Cond(const ir_node *node) { assert(node); @@ -714,7 +738,7 @@ _get_Block_n_cfgpreds(const ir_node *node) { } static INLINE ir_node * -_get_Block_cfgpred(ir_node *node, int pos) { +_get_Block_cfgpred(const ir_node *node, int pos) { assert(0 <= pos && pos < get_irn_arity(node)); assert(_is_Block(node)); return _get_irn_n(node, pos); @@ -732,7 +756,7 @@ _get_Block_cfgpred(ir_node *node, int pos) { * Start, but the Bad node. */ static INLINE ir_node * -_get_Block_cfgpred_block(ir_node *node, int pos) { +_get_Block_cfgpred_block(const ir_node *node, int pos) { ir_node *res = skip_Proj(get_Block_cfgpred(node, pos)); if (!is_Bad(res)) res = get_nodes_block(res); @@ -860,7 +884,7 @@ static INLINE void _set_Cond_jmp_pred(ir_node *node, cond_jmp_predicate pred) { node->attr.cond.pred = pred; } -static INLINE int _get_Psi_n_conds(ir_node *node) { +static INLINE int _get_Psi_n_conds(const ir_node *node) { assert(_get_irn_op(node) == op_Psi); return _get_irn_arity(node) >> 1; } @@ -913,6 +937,7 @@ static INLINE void _set_irn_dbg_info(ir_node *n, dbg_info *db) { #define is_Phi(node) _is_Phi(node) #define is_Const(node) _is_Const(node) #define is_Conv(node) _is_Conv(node) +#define is_strictConv(node) _is_strictConv(node) #define is_Cast(node) _is_Cast(node) #define is_Unknown(node) _is_Unknown(node) #define is_Return(node) _is_Return(node) @@ -926,6 +951,7 @@ static INLINE void _set_irn_dbg_info(ir_node *n, dbg_info *db) { #define is_Confirm(node) _is_Confirm(node) #define is_Pin(node) _is_Pin(node) #define is_SymConst(node) _is_SymConst(node) +#define is_SymConst_addr_ent(node) _is_SymConst_addr_ent(node) #define is_Cond(node) _is_Cond(node) #define is_CopyB(node) _is_CopyB(node) #define is_Cmp(node) _is_Cmp(node) @@ -955,6 +981,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)