X-Git-Url: http://nsz.repo.hu/git/?a=blobdiff_plain;f=ir%2Fopt%2Fcombo.c;h=099091c7efddcfd20b701d91dc5c7c7aa6acce10;hb=0cc8bfc863da28d3799e9eca1d1765d564b6e573;hp=79fa040d3c9142678568f9e130a97621f0638efb;hpb=81d4cf5aeab4d0c0bc2a5e7c461d58ee7a7522d6;p=libfirm diff --git a/ir/opt/combo.c b/ir/opt/combo.c index 79fa040d3..099091c7e 100644 --- a/ir/opt/combo.c +++ b/ir/opt/combo.c @@ -500,6 +500,7 @@ static INLINE tarval *get_node_tarval(const ir_node *irn) { */ static INLINE void add_to_worklist(partition_t *X, environment_t *env) { assert(X->on_worklist == 0); + DB((dbg, LEVEL_2, "Adding part%d to worklist\n", X->nr)); X->wl_next = env->worklist; X->on_worklist = 1; env->worklist = X; @@ -2552,9 +2553,6 @@ static void propagate(environment_t *env) { if (old_type_was_T_or_C) { node_t *y, *tmp; - if (Y->on_worklist == 0) - add_to_worklist(Y, env); - /* check if some nodes will make the leader -> follower transition */ list_for_each_entry_safe(node_t, y, tmp, &Y->Leader, node_list) { if (y->type.tv != tarval_top && ! is_con(y->type)) { @@ -2913,7 +2911,7 @@ static void apply_end(ir_node *end, environment_t *env) { if (! is_Block(ka)) node = get_irn_node(get_nodes_block(ka)); - if (node->type.tv != tarval_unreachable) + if (node->type.tv != tarval_unreachable && !is_Bad(ka)) in[j++] = ka; } if (j != n) { @@ -3000,7 +2998,6 @@ void combo(ir_graph *irg) { assure_irg_outs(irg); assure_cf_loop(irg); - /* we have our own value_of function */ set_value_of_func(get_node_tarval);