iropt: Remove repeated get_irn_irg().
[libfirm] / ir / ir / irverify.c
index 0117c4c..b122d58 100644 (file)
@@ -24,6 +24,7 @@
  */
 #include "config.h"
 
+#include "irnode_t.h"
 #include "irprog.h"
 #include "irop_t.h"
 #include "irgraph_t.h"
@@ -662,28 +663,6 @@ static int verify_node_Proj_CopyB(const ir_node *p)
        return 1;
 }
 
-/**
- * verify a Proj(Bound) node
- */
-static int verify_node_Proj_Bound(const ir_node *p)
-{
-       ir_mode *mode = get_irn_mode(p);
-       ir_node *n    = get_Proj_pred(p);
-       long proj     = get_Proj_proj(p);
-
-       ASSERT_AND_RET_DBG(
-               (
-                       (proj == pn_Bound_M         && mode == mode_M) ||
-                       (proj == pn_Bound_X_regular && mode == mode_X) ||
-                       (proj == pn_Bound_X_except  && mode == mode_X) ||
-                       (proj == pn_Bound_res       && mode == get_irn_mode(get_Bound_index(n)))
-               ),
-               "wrong Proj from Bound", 0,
-               show_proj_failure(p);
-       );
-       return 1;
-}
-
 static int verify_node_Proj_fragile(const ir_node *node)
 {
        ir_node *pred             = get_Proj_pred(node);
@@ -882,7 +861,7 @@ static int verify_node_Return(const ir_node *n)
        ASSERT_AND_RET( mymode == mode_X, "Result X", 0 );   /* result X */
        /* Compare returned results with result types of method type */
        mt = get_entity_type(get_irg_entity(irg));
-       ASSERT_AND_RET_DBG(get_Return_n_ress(n) == get_method_n_ress(mt),
+       ASSERT_AND_RET_DBG((size_t)get_Return_n_ress(n) == get_method_n_ress(mt),
                "Number of results for Return doesn't match number of results in type.", 0,
                show_return_nres(irg, n, mt););
        for (i = get_Return_n_ress(n) - 1; i >= 0; --i) {
@@ -1393,23 +1372,6 @@ static int verify_node_Conv(const ir_node *n)
        return 1;
 }
 
-/**
- * verify a Cast node
- */
-static int verify_node_Cast(const ir_node *n)
-{
-       ir_mode *mymode  = get_irn_mode(n);
-       ir_mode *op1mode = get_irn_mode(get_Cast_op(n));
-
-       ASSERT_AND_RET_DBG(
-               /* Conv: BB x datab1 --> datab2 */
-               mode_is_data(op1mode) && op1mode == mymode,
-               "Cast node", 0,
-               show_unop_failure(n, "/* Conv: BB x datab1 --> datab2 */");
-       );
-       return 1;
-}
-
 /**
  * verify a Phi node
  */
@@ -1612,28 +1574,6 @@ static int verify_node_CopyB(const ir_node *n)
        return 1;
 }
 
-/**
- * verify a Bound node
- */
-static int verify_node_Bound(const ir_node *n)
-{
-       ir_mode *mymode  = get_irn_mode(n);
-       ir_mode *op1mode = get_irn_mode(get_Bound_mem(n));
-       ir_mode *op2mode = get_irn_mode(get_Bound_index(n));
-       ir_mode *op3mode = get_irn_mode(get_Bound_lower(n));
-       ir_mode *op4mode = get_irn_mode(get_Bound_upper(n));
-
-       /* Bound: BB x M x int x int x int --> M x X */
-       ASSERT_AND_RET(
-               mymode == mode_T &&
-               op1mode == mode_M &&
-               op2mode == op3mode &&
-               op3mode == op4mode &&
-               mode_is_int(op3mode),
-               "Bound node", 0 );
-       return 1;
-}
-
 /**
  * Check dominance.
  * For each usage of a node, it is checked, if the block of the
@@ -1732,6 +1672,12 @@ int irn_verify_irg(const ir_node *n, ir_graph *irg)
                );
        }
 
+       ASSERT_AND_RET_DBG(
+               !is_irn_start_block_placed(n) || get_nodes_block(n) == get_irg_start_block(irg),
+               "node should be in start block", 0,
+               ir_printf("node %+F", n);
+       );
+
        if (op->ops.verify_node)
                return op->ops.verify_node(n);
 
@@ -2172,9 +2118,7 @@ void ir_register_verify_node_ops(void)
        register_verify_node_func(op_Alloc,    verify_node_Alloc);
        register_verify_node_func(op_And,      verify_node_And);
        register_verify_node_func(op_Block,    verify_node_Block);
-       register_verify_node_func(op_Bound,    verify_node_Bound);
        register_verify_node_func(op_Call,     verify_node_Call);
-       register_verify_node_func(op_Cast,     verify_node_Cast);
        register_verify_node_func(op_Cmp,      verify_node_Cmp);
        register_verify_node_func(op_Cond,     verify_node_Cond);
        register_verify_node_func(op_Confirm,  verify_node_Confirm);
@@ -2212,7 +2156,6 @@ void ir_register_verify_node_ops(void)
        register_verify_node_func(op_Sync,     verify_node_Sync);
 
        register_verify_node_func_proj(op_Alloc,  verify_node_Proj_Alloc);
-       register_verify_node_func_proj(op_Bound,  verify_node_Proj_Bound);
        register_verify_node_func_proj(op_Call,   verify_node_Proj_Call);
        register_verify_node_func_proj(op_Cond,   verify_node_Proj_Cond);
        register_verify_node_func_proj(op_CopyB,  verify_node_Proj_CopyB);