X-Git-Url: http://nsz.repo.hu/git/?a=blobdiff_plain;f=ir%2Fana%2Firdom.c;h=ffb2c97b91c8bab517920251c73d233b62f84811;hb=4bad1346ff2abc3923beea23e5ac949acc7ca514;hp=930078e08105f5e631ba1375436aa12885e3e37c;hpb=45f82f0f3bb66c4d547a1b5ed29357eae8914f64;p=libfirm diff --git a/ir/ana/irdom.c b/ir/ana/irdom.c index 930078e08..ffb2c97b9 100644 --- a/ir/ana/irdom.c +++ b/ir/ana/irdom.c @@ -152,6 +152,7 @@ static void assign_tree_pre_order(ir_node *bl, void *data) { unsigned *num = data; dom_info *bi = get_dom_info(bl); + bi->tree_pre_num = (*num)++; } @@ -160,13 +161,16 @@ static void assign_tree_pre_order_max(ir_node *bl, void *data) dom_info *bi = get_dom_info(bl); ir_node *p; unsigned max = 0; + unsigned children = 0; for(p = bi->first; p; p = get_dom_info(p)->next) { unsigned max_p = get_dom_info(p)->max_subtree_pre_num; max = max > max_p ? max : max_p; + children++; } - bi->max_subtree_pre_num = max; + bi->max_subtree_pre_num = children > 0 ? max : bi->tree_pre_num; + assert(bi->max_subtree_pre_num >= bi->tree_pre_num); } /*--------------------------------------------------------------------*/