X-Git-Url: http://nsz.repo.hu/git/?a=blobdiff_plain;ds=sidebyside;f=ir%2Fbe%2Fbepbqpcoloring.c;h=f9de569e8a10d3c23189449d05acff5265266151;hb=df2faee01a5832057bb3ca0ba5f67e979c916e19;hp=940e031718dedfda2ba82f76de2aab3e7dd2dfb8;hpb=256f62cc95bff324e0bd4108ae1af8a748871f39;p=libfirm diff --git a/ir/be/bepbqpcoloring.c b/ir/be/bepbqpcoloring.c index 940e03171..f9de569e8 100644 --- a/ir/be/bepbqpcoloring.c +++ b/ir/be/bepbqpcoloring.c @@ -332,57 +332,27 @@ static void create_pbqp_coloring_instance(ir_node *block, void *data) /* create pbqp nodes, interference edges and reverse perfect elimination order */ sched_foreach_reverse(block, irn) { - if (get_irn_mode(irn) == mode_T) { - foreach_out_edge(irn, edge) { - ir_node *proj = get_edge_src_irn(edge); - if (!arch_irn_consider_in_reg_alloc(cls, proj)) - continue; - - /* create pbqp source node if it dosn't exist */ - if (get_node(pbqp_inst, get_irn_idx(proj)) == NULL) { - create_pbqp_node(pbqp_alloc_env, proj); - } - - /* create nodes and interference edges */ - foreach_ir_nodeset(&live_nodes, live, iter) { - /* create pbqp source node if it dosn't exist */ - if (get_node(pbqp_inst, get_irn_idx(live)) == NULL) { - create_pbqp_node(pbqp_alloc_env, live); - } + be_foreach_value(irn, value, + if (!arch_irn_consider_in_reg_alloc(cls, value)) + continue; - /* no edges to itself */ - if (proj == live) { - continue; - } + /* create pbqp source node if it dosn't exist */ + if (!get_node(pbqp_inst, get_irn_idx(value))) + create_pbqp_node(pbqp_alloc_env, value); - insert_ife_edge(pbqp_alloc_env, proj, live); - } - } - } - else { - if (arch_irn_consider_in_reg_alloc(cls, irn)) { + /* create nodes and interference edges */ + foreach_ir_nodeset(&live_nodes, live, iter) { /* create pbqp source node if it dosn't exist */ - if (get_node(pbqp_inst, get_irn_idx(irn)) == NULL) { - create_pbqp_node(pbqp_alloc_env, irn); - } - - /* create nodes and interference edges */ - foreach_ir_nodeset(&live_nodes, live, iter) { - /* create pbqp source node if it dosn't exist */ - if (get_node(pbqp_inst, get_irn_idx(live)) == NULL) { - create_pbqp_node(pbqp_alloc_env, live); - } + if (!get_node(pbqp_inst, get_irn_idx(live))) + create_pbqp_node(pbqp_alloc_env, live); - /* no edges to itself */ - if (irn == live) { - continue; - } + /* no edges to itself */ + if (value == live) + continue; - /* insert interference edge */ - insert_ife_edge(pbqp_alloc_env, irn, live); - } + insert_ife_edge(pbqp_alloc_env, value, live); } - } + ); /* get living nodes for next step */ if (!is_Phi(irn)) {