X-Git-Url: http://nsz.repo.hu/git/?a=blobdiff_plain;f=ir%2Fopt%2Fcombo.c;h=099091c7efddcfd20b701d91dc5c7c7aa6acce10;hb=0cc8bfc863da28d3799e9eca1d1765d564b6e573;hp=4d80dcf51619a171da332f3d7ffa8e19cca599c7;hpb=605982d0319ef990db956a787fe1e727f8076c3f;p=libfirm diff --git a/ir/opt/combo.c b/ir/opt/combo.c index 4d80dcf51..099091c7e 100644 --- a/ir/opt/combo.c +++ b/ir/opt/combo.c @@ -50,6 +50,7 @@ #include "irgmod.h" #include "iropt_dbg.h" #include "debug.h" +#include "array_t.h" #include "error.h" #include "tv_t.h" @@ -499,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; @@ -2551,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)) { @@ -2912,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) { @@ -2999,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);