BugFix: equivalent_node_Bound() was too greedy, reduced to a safe minimum (now mostly...
[libfirm] / ir / ir / irnode_t.h
index bd73d0f..5d3e42e 100644 (file)
@@ -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.
  *
@@ -544,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);
@@ -568,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);
@@ -662,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);
@@ -868,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;
 }
@@ -921,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)
@@ -934,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)
@@ -963,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)