X-Git-Url: http://nsz.repo.hu/git/?a=blobdiff_plain;f=ir%2Fbe%2Fbeifg.c;h=e59faa6d94da53e31e2ce77eef2320a7fce26897;hb=c6571686bfbfb3c87ae24ae1dc568e685d6cd49a;hp=f9196129529b8771c7421553f820fc0307882208;hpb=ce6161a7e42a48f7422b7babcc64d8ace18e2687;p=libfirm diff --git a/ir/be/beifg.c b/ir/be/beifg.c index f91961295..e59faa6d9 100644 --- a/ir/be/beifg.c +++ b/ir/be/beifg.c @@ -22,7 +22,6 @@ * @brief Interface for interference graphs. * @author Sebastian Hack * @date 18.11.2005 - * @version $Id$ */ #include "config.h" @@ -37,9 +36,7 @@ #include "irnode_t.h" #include "irprintf.h" #include "irtools.h" -#include "irbitset.h" #include "beifg.h" -#include "irphase_t.h" #include "error.h" #include "xmalloc.h" @@ -189,7 +186,7 @@ ir_node *be_ifg_neighbours_begin(const be_ifg_t *ifg, neighbours_iter_t *iter, const ir_node *irn) { find_neighbours(ifg, iter, irn); - return ir_nodeset_iterator_next(&iter->iter); + return get_next_neighbour(iter); } ir_node *be_ifg_neighbours_next(neighbours_iter_t *iter) @@ -321,68 +318,19 @@ be_ifg_t *be_create_ifg(const be_chordal_env_t *env) return ifg; } -void be_ifg_dump_dot(be_ifg_t *ifg, ir_graph *irg, FILE *file, const be_ifg_dump_dot_cb_t *cb, void *self) -{ - nodes_iter_t nodes_it; - neighbours_iter_t neigh_it; - bitset_t *nodes = bitset_malloc(get_irg_last_idx(irg)); - - ir_node *n, *m; - - fprintf(file, "graph G {\n\tgraph ["); - if (cb->graph_attr) - cb->graph_attr(file, self); - fprintf(file, "];\n"); - - if (cb->at_begin) - cb->at_begin(file, self); - - be_ifg_foreach_node(ifg, &nodes_it, n) { - if (cb->is_dump_node && cb->is_dump_node(self, n)) { - int idx = get_irn_idx(n); - bitset_set(nodes, idx); - fprintf(file, "\tnode ["); - if (cb->node_attr) - cb->node_attr(file, self, n); - fprintf(file, "]; n%d;\n", idx); - } - } - - /* Check, if all neighbours are indeed connected to the node. */ - be_ifg_foreach_node(ifg, &nodes_it, n) { - be_ifg_foreach_neighbour(ifg, &neigh_it, n, m) { - int n_idx = get_irn_idx(n); - int m_idx = get_irn_idx(m); - - if (n_idx < m_idx && bitset_is_set(nodes, n_idx) && bitset_is_set(nodes, m_idx)) { - fprintf(file, "\tn%d -- n%d [", n_idx, m_idx); - if (cb->edge_attr) - cb->edge_attr(file, self, n, m); - fprintf(file, "];\n"); - } - } - } - - if (cb->at_end) - cb->at_end(file, self); - - fprintf(file, "}\n"); - bitset_free(nodes); -} - static void int_comp_rec(be_ifg_t *ifg, ir_node *n, bitset_t *seen) { neighbours_iter_t neigh_it; ir_node *m; be_ifg_foreach_neighbour(ifg, &neigh_it, n, m) { - if (bitset_contains_irn(seen, m)) + if (bitset_is_set(seen, get_irn_idx(m))) continue; - if (arch_get_register_req_out(m)->type & arch_register_req_type_ignore) + if (arch_get_irn_register_req(m)->type & arch_register_req_type_ignore) continue; - bitset_add_irn(seen, m); + bitset_set(seen, get_irn_idx(m)); int_comp_rec(ifg, m, seen); } @@ -392,19 +340,19 @@ static int int_component_stat(ir_graph *irg, be_ifg_t *ifg) { int n_comp = 0; nodes_iter_t nodes_it; - bitset_t *seen = bitset_irg_malloc(irg); + bitset_t *seen = bitset_malloc(get_irg_last_idx(irg)); ir_node *n; be_ifg_foreach_node(ifg, &nodes_it, n) { - if (bitset_contains_irn(seen, n)) + if (bitset_is_set(seen, get_irn_idx(n))) continue; - if (arch_get_register_req_out(n)->type & arch_register_req_type_ignore) + if (arch_get_irn_register_req(n)->type & arch_register_req_type_ignore) continue; ++n_comp; - bitset_add_irn(seen, n); + bitset_set(seen, get_irn_idx(n)); int_comp_rec(ifg, n, seen); } @@ -416,7 +364,7 @@ void be_ifg_stat(ir_graph *irg, be_ifg_t *ifg, be_ifg_stat_t *stat) { nodes_iter_t nodes_it; neighbours_iter_t neigh_it; - bitset_t *nodes = bitset_irg_malloc(irg); + bitset_t *nodes = bitset_malloc(get_irg_last_idx(irg)); ir_node *n, *m; memset(stat, 0, sizeof(stat[0])); @@ -424,8 +372,8 @@ void be_ifg_stat(ir_graph *irg, be_ifg_t *ifg, be_ifg_stat_t *stat) be_ifg_foreach_node(ifg, &nodes_it, n) { stat->n_nodes += 1; be_ifg_foreach_neighbour(ifg, &neigh_it, n, m) { - bitset_add_irn(nodes, n); - stat->n_edges += !bitset_contains_irn(nodes, m); + bitset_set(nodes, get_irn_idx(n)); + stat->n_edges += !bitset_is_set(nodes, get_irn_idx(m)); } }