fixed indent
[libfirm] / ir / be / belive.c
index 98d98f3..ae17a63 100644 (file)
@@ -157,7 +157,6 @@ void be_liveness(ir_graph *irg)
   if(live_info->live)
     del_set(live_info->live);
 
-       ir_fprintf(stderr, "%F\n", irg);
 
   live_info->live = new_set(cmp_irn_live, 8192);
   irg_walk_graph(irg, liveness_for_node, NULL, NULL);
@@ -190,3 +189,30 @@ void be_liveness_dump(ir_graph *irg, FILE *f)
 {
        irg_block_walk_graph(irg, dump_liveness_walker, NULL, f);
 }
+
+static void dom_check(ir_node *irn, void *data)
+{
+       if(!is_Block(irn) && irn != get_irg_end(get_irn_irg(irn))) {
+               int i, n;
+               ir_node *bl = get_nodes_block(irn);
+
+               for(i = 0, n = get_irn_arity(irn); i < n; ++i) {
+                       ir_node *op     = get_irn_n(irn, i);
+                       ir_node *def_bl = get_nodes_block(op);
+                       ir_node *use_bl = bl;
+
+                       if(is_Phi(irn))
+                               use_bl = get_Block_cfgpred_block(bl, i);
+
+                       if(!block_dominates(def_bl, use_bl)) {
+                               ir_fprintf(stderr, "%+F in %+F must dominate %+F for user %+F\n", op, def_bl, use_bl, irn);
+                               assert(0);
+                       }
+               }
+       }
+}
+
+void be_check_dominance(ir_graph *irg)
+{
+       irg_walk_graph(irg, dom_check, NULL, NULL);
+}