X-Git-Url: http://nsz.repo.hu/git/?a=blobdiff_plain;f=ir%2Fbe%2Fbelive.c;h=ae17a63381c7b1ba6e16d819c005df386279f856;hb=c7aae220f908ae663ee138672a16a14aceab2aa4;hp=98d98f301882e05efb32d4e05eeb9e96e8ae1a70;hpb=b267d8d2e4100aa20cc3771b1b8558d9e0302ed1;p=libfirm diff --git a/ir/be/belive.c b/ir/be/belive.c index 98d98f301..ae17a6338 100644 --- a/ir/be/belive.c +++ b/ir/be/belive.c @@ -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); +}