fehler76: assertion when converting float constant to int
[libfirm] / ir / ir / irnode_t.h
index 0a1d401..98fbe03 100644 (file)
@@ -193,8 +193,8 @@ _get_irn_intra_n(const ir_node *node, int n) {
 
        nn = node->in[n + 1];
        if (nn == NULL) {
-               /* only block inputs are allowed to be NULL */
-               assert(n == -1 && "NULL input of a node");
+               /* only block and Anchor inputs are allowed to be NULL */
+               assert((node->op == op_Anchor || n == -1) && "NULL input of a node");
                return NULL;
        }
        if (nn->op != op_Id) return nn;
@@ -472,6 +472,30 @@ _is_Not(const ir_node *node) {
        return (_get_irn_op(node) == op_Not);
 }
 
+static INLINE int
+_is_Shl(const ir_node *node) {
+       assert(node);
+       return (_get_irn_op(node) == op_Shl);
+}
+
+static INLINE int
+_is_Shr(const ir_node *node) {
+       assert(node);
+       return (_get_irn_op(node) == op_Shr);
+}
+
+static INLINE int
+_is_Shrs(const ir_node *node) {
+       assert(node);
+       return (_get_irn_op(node) == op_Shrs);
+}
+
+static INLINE int
+_is_Rot(const ir_node *node) {
+       assert(node);
+       return (_get_irn_op(node) == op_Rot);
+}
+
 static INLINE int
 _is_Psi(const ir_node *node) {
        assert(node);
@@ -626,6 +650,11 @@ _is_ASM(const ir_node *node) {
        return (_get_irn_op(node) == op_ASM);
 }
 
+static INLINE int
+_is_Anchor(const ir_node *node) {
+       return (_get_irn_op(node) == op_Anchor);
+}
+
 static INLINE int
 _is_no_Block(const ir_node *node) {
        assert(node && _is_ir_node(node));
@@ -862,6 +891,7 @@ static INLINE void _set_irn_dbg_info(ir_node *n, dbg_info *db) {
 #define is_Jmp(node)                          _is_Jmp(node)
 #define is_Raise(node)                        _is_Raise(node)
 #define is_ASM(node)                          _is_ASM(node)
+#define is_Anchor(node)                       _is_Anchor(node)
 #define is_Bad(node)                          _is_Bad(node)
 #define is_NoMem(node)                        _is_NoMem(node)
 #define is_Start(node)                        _is_Start(node)
@@ -877,6 +907,10 @@ static INLINE void _set_irn_dbg_info(ir_node *n, dbg_info *db) {
 #define is_Eor(node)                          _is_Eor(node)
 #define is_Sub(node)                          _is_Sub(node)
 #define is_Not(node)                          _is_Not(node)
+#define is_Shl(node)                          _is_Shl(node)
+#define is_Shr(node)                          _is_Shr(node)
+#define is_Shrs(node)                         _is_Shrs(node)
+#define is_Rot(node)                          _is_Rot(node)
 #define is_Psi(node)                          _is_Psi(node)
 #define is_Tuple(node)                        _is_Tuple(node)
 #define is_no_Block(node)                     _is_no_Block(node)