remove unused be_FrameLoad and be_FrameStore
[libfirm] / ir / ir / irvrfy.c
index 048c507..3e98cbb 100644 (file)
@@ -661,7 +661,7 @@ static int verify_node_Proj_Proj(ir_node *pred, ir_node *p) {
 
                if (nr == pn_Start_T_args) {
                        ASSERT_AND_RET(
-                               (proj >= 0 && mode_is_data(mode)),
+                               (proj >= 0 && mode_is_datab(mode)),
                                "wrong Proj from Proj from Start", 0);
                        ASSERT_AND_RET(
                                (proj < get_method_n_params(mt)),
@@ -1096,6 +1096,22 @@ static int verify_node_InstOf(ir_node *n, ir_graph *irg) {
        return 1;
 }
 
+/**
+ * Check if the pinned state is right.
+ */
+static int verify_right_pinned(ir_node *n) {
+       ir_node *mem;
+
+       if (get_irn_pinned(n) == op_pin_state_pinned)
+               return 1;
+       mem = get_Call_mem(n);
+
+       /* if it's not pinned, its memory predecessor must be NoMem or Pin */
+       if (is_NoMem(mem) || is_Pin(mem))
+               return 1;
+       return 0;
+}
+
 /**
  * verify a Call node
  */
@@ -1112,10 +1128,7 @@ static int verify_node_Call(ir_node *n, ir_graph *irg) {
        ASSERT_AND_RET( op1mode == mode_M && mode_is_reference(op2mode), "Call node", 0 );  /* operand M x ref */
 
        /* NoMem nodes are only allowed as memory input if the Call is NOT pinned */
-       ASSERT_AND_RET(
-               (get_irn_op(get_Call_mem(n)) == op_NoMem) ||
-               (get_irn_op(get_Call_mem(n)) != op_NoMem && get_irn_pinned(n) == op_pin_state_pinned),
-               "Call node with wrong memory input", 0 );
+       ASSERT_AND_RET(verify_right_pinned(n),"Call node with wrong memory input", 0 );
 
        mt = get_Call_type(n);
        if(get_unknown_type() == mt) {
@@ -1123,7 +1136,7 @@ static int verify_node_Call(ir_node *n, ir_graph *irg) {
        }
 
        for (i = get_Call_n_params(n) - 1; i >= 0; --i) {
-               ASSERT_AND_RET( mode_is_data(get_irn_mode(get_Call_param(n, i))), "Call node", 0 );  /* operand datai */
+               ASSERT_AND_RET( mode_is_datab(get_irn_mode(get_Call_param(n, i))), "Call node", 0 );  /* operand datai */
        }
 
        ASSERT_AND_RET( mymode == mode_T, "Call result not a tuple", 0 );   /* result T */
@@ -1185,7 +1198,7 @@ static int verify_node_Add(ir_node *n, ir_graph *irg) {
        ASSERT_AND_RET_DBG(
                (
                        /* common Add: BB x numP x numP --> numP */
-                       (op1mode == mymode && op2mode == op1mode && mode_is_numP(mymode)) ||
+                       (op1mode == mymode && op2mode == op1mode && mode_is_data(mymode)) ||
                        /* Pointer Add: BB x ref x int --> ref */
                        (mode_is_reference(op1mode) && mode_is_int(op2mode) && op1mode == mymode) ||
                        /* Pointer Add: BB x int x ref --> ref */
@@ -1211,7 +1224,7 @@ static int verify_node_Sub(ir_node *n, ir_graph *irg) {
        ASSERT_AND_RET_DBG(
                (
                        /* common Sub: BB x numP x numP --> numP */
-                       (mymode ==op1mode && mymode == op2mode && mode_is_numP(op1mode)) ||
+                       (mymode ==op1mode && mymode == op2mode && mode_is_data(op1mode)) ||
                        /* Pointer Sub: BB x ref x int --> ref */
                        (op1mode == mymode && mode_is_int(op2mode) && mode_is_reference(mymode)) ||
                        /* Pointer Sub: BB x int x ref --> ref */
@@ -1422,7 +1435,7 @@ static int verify_node_Cmp(ir_node *n, ir_graph *irg) {
 
        ASSERT_AND_RET_DBG(
                /* Cmp: BB x datab x datab --> b16 */
-               mode_is_data (op1mode) &&
+               mode_is_datab(op1mode) &&
                op2mode == op1mode &&
                mymode == mode_T,
                "Cmp node", 0,
@@ -1627,7 +1640,7 @@ static int verify_node_Store(ir_node *n, ir_graph *irg) {
        ir_mode *op2mode = get_irn_mode(get_Store_ptr(n));
        ir_mode *op3mode = get_irn_mode(get_Store_value(n));
 
-       ASSERT_AND_RET(op1mode == mode_M && mode_is_data(op3mode), "Store node", 0 );
+       ASSERT_AND_RET(op1mode == mode_M && mode_is_datab(op3mode), "Store node", 0 );
        if (get_irg_phase_state(irg) != phase_backend) {
                ASSERT_AND_RET(mode_is_reference(op2mode), "Store node", 0 );
        } else {
@@ -1743,7 +1756,7 @@ static int verify_node_Mux(ir_node *n, ir_graph *irg) {
                op1mode == mode_b &&
                op2mode == mymode &&
                op3mode == mymode &&
-               mode_is_numP(mymode),
+               mode_is_data(mymode),
                "Mux node", 0
                );
        return 1;
@@ -1777,10 +1790,7 @@ static int verify_node_CopyB(ir_node *n, ir_graph *irg) {
 
        /* NoMem nodes are only allowed as memory input if the CopyB is NOT pinned.
           This should happen RARELY, as CopyB COPIES MEMORY */
-       ASSERT_AND_RET(
-               (get_irn_op(get_CopyB_mem(n)) == op_NoMem) ||
-               (get_irn_op(get_CopyB_mem(n)) != op_NoMem && get_irn_pinned(n) == op_pin_state_pinned),
-               "CopyB node with wrong memory input", 0 );
+       ASSERT_AND_RET(verify_right_pinned(n), "CopyB node with wrong memory input", 0 );
        return 1;
 }
 
@@ -1816,7 +1826,7 @@ static int verify_node_Bound(ir_node *n, ir_graph *irg) {
  */
 static int check_dominance_for_node(ir_node *use) {
        /* This won't work for blocks and the end node */
-       if (!is_Block(use) && use != get_irg_end(current_ir_graph)) {
+       if (!is_Block(use) && use != get_irg_end(current_ir_graph) && use != current_ir_graph->anchor) {
                int i;
                ir_node *bl = get_nodes_block(use);
 
@@ -1931,8 +1941,9 @@ static void vrfy_wrap_ssa(ir_node *node, void *env) {
        int *res = env;
 
        *res = irn_vrfy(node);
-       if (*res)
+       if (*res) {
                *res = check_dominance_for_node(node);
+       }
 }
 
 #endif /* DEBUG_libfirm */
@@ -1956,7 +1967,7 @@ int irg_verify(ir_graph *irg, unsigned flags) {
        if (flags & VRFY_ENFORCE_SSA)
                compute_doms(irg);
 
-       irg_walk_graph(
+       irg_walk_anchors(
                irg,
                get_irg_dom_state(irg) == dom_consistent &&
                get_irg_pinned(irg) == op_pin_state_pinned ? vrfy_wrap_ssa : vrfy_wrap,