verify that the predecessor of a block is a cfop
authorMatthias Braun <matze@braunis.de>
Wed, 27 Apr 2011 11:22:31 +0000 (13:22 +0200)
committerMatthias Braun <matze@braunis.de>
Thu, 28 Apr 2011 10:45:11 +0000 (12:45 +0200)
ir/ir/irverify.c

index c093b92..c0b8bab 100644 (file)
@@ -768,13 +768,14 @@ static int verify_node_Block(ir_node *n, ir_graph *irg)
                ASSERT_AND_RET(
                        is_Bad(pred) || (get_irn_mode(pred) == mode_X),
                        "Block node must have a mode_X predecessor", 0);
+               ASSERT_AND_RET(is_cfop(skip_Proj(pred)), "Block predecessor must be a cfop", 0);
        }
 
        if (n == get_irg_start_block(irg)) {
                ASSERT_AND_RET(get_Block_n_cfgpreds(n) == 0, "Start Block node", 0);
        }
 
-       if (n == get_irg_end_block(irg) && get_irg_phase_state(irg) != phase_backend)
+       if (n == get_irg_end_block(irg) && get_irg_phase_state(irg) != phase_backend) {
                /* End block may only have Return, Raise or fragile ops as preds. */
                for (i = get_Block_n_cfgpreds(n) - 1; i >= 0; --i) {
                        ir_node *pred =  skip_Proj(get_Block_cfgpred(n, i));
@@ -789,9 +790,10 @@ static int verify_node_Block(ir_node *n, ir_graph *irg)
                                ),
                                "End Block node", 0);
                }
-               /*  irg attr must == graph we are in. */
-               ASSERT_AND_RET(((get_irn_irg(n) && get_irn_irg(n) == irg)), "Block node has wrong irg attribute", 0);
-               return 1;
+       }
+       /*  irg attr must == graph we are in. */
+       ASSERT_AND_RET(((get_irn_irg(n) && get_irn_irg(n) == irg)), "Block node has wrong irg attribute", 0);
+       return 1;
 }
 
 /**