remove general ifg interface and always use ifg_std, this considerably simplifies...
[libfirm] / ir / be / becopyilp2.c
index 52a36f6..028abda 100644 (file)
@@ -55,7 +55,7 @@
 #include "irtools.h"
 #include "irgwalk.h"
 #include "becopyilp_t.h"
-#include "beifg_t.h"
+#include "beifg.h"
 #include "besched.h"
 #include "bemodule.h"
 
@@ -70,18 +70,19 @@ typedef struct _local_env_t {
        DEBUG_ONLY(firm_dbg_module_t *dbg;)
 } local_env_t;
 
-static void build_coloring_cstr(ilp_env_t *ienv) {
+static void build_coloring_cstr(ilp_env_t *ienv)
+{
        be_ifg_t *ifg     = ienv->co->cenv->ifg;
-       void *iter        = be_ifg_nodes_iter_alloca(ifg);
+       nodes_iter_t iter;
        bitset_t *colors;
        ir_node *irn;
        char buf[16];
 
        colors = bitset_alloca(arch_register_class_n_regs(ienv->co->cls));
 
-       be_ifg_foreach_node(ifg, iter, irn)
+       be_ifg_foreach_node(ifg, &iter, irn)
                if (!sr_is_removed(ienv->sr, irn)) {
-                       bitset_pos_t col;
+                       unsigned col;
                        int cst_idx;
                        const arch_register_req_t *req;
                        int curr_node_color = get_irn_col(irn);
@@ -132,7 +133,7 @@ static void build_interference_cstr(ilp_env_t *ienv)
        local_env_t *lenv     = ienv->env;
        be_ifg_t    *ifg      = ienv->co->cenv->ifg;
        int          n_colors = lenv->n_colors;
-       void        *iter     = be_ifg_cliques_iter_alloca(ifg);
+       cliques_iter_t iter;
        ir_node    **clique   = ALLOCAN(ir_node*, n_colors);
        int          size;
        int          col;
@@ -141,7 +142,7 @@ static void build_interference_cstr(ilp_env_t *ienv)
        char buf[16];
 
        /* for each maximal clique */
-       be_ifg_foreach_clique(ifg, iter, clique, &size) {
+       be_ifg_foreach_clique(ifg, &iter, clique, &size) {
                int realsize = 0;
 
                for (i=0; i<size; ++i)
@@ -174,7 +175,8 @@ static void build_interference_cstr(ilp_env_t *ienv)
  *       by walking over all affinity edges. Graph structure
  *       does not provide this walker, yet.
  */
-static void build_affinity_cstr(ilp_env_t *ienv) {
+static void build_affinity_cstr(ilp_env_t *ienv)
+{
        local_env_t *lenv = ienv->env;
        int n_colors      = lenv->n_colors;
        unit_t *curr;
@@ -220,7 +222,8 @@ typedef struct _edge_t {
        ir_node *n1, *n2;
 } edge_t;
 
-static int compare_edge_t(const void *k1, const void *k2, size_t size) {
+static int compare_edge_t(const void *k1, const void *k2, size_t size)
+{
        const edge_t *e1 = k1;
        const edge_t *e2 = k2;
        (void) size;
@@ -230,7 +233,8 @@ static int compare_edge_t(const void *k1, const void *k2, size_t size) {
 
 #define HASH_EDGE(e) (hash_irn((e)->n1) ^ hash_irn((e)->n2))
 
-static inline edge_t *add_edge(set *edges, ir_node *n1, ir_node *n2, int *counter) {
+static inline edge_t *add_edge(set *edges, ir_node *n1, ir_node *n2, int *counter)
+{
        edge_t new_edge;
 
        if (PTR_TO_INT(n1) < PTR_TO_INT(n2)) {
@@ -244,7 +248,8 @@ static inline edge_t *add_edge(set *edges, ir_node *n1, ir_node *n2, int *counte
        return set_insert(edges, &new_edge, sizeof(new_edge), HASH_EDGE(&new_edge));
 }
 
-static inline edge_t *find_edge(set *edges, ir_node *n1, ir_node *n2) {
+static inline edge_t *find_edge(set *edges, ir_node *n1, ir_node *n2)
+{
        edge_t new_edge;
 
        if (PTR_TO_INT(n1) < PTR_TO_INT(n2)) {
@@ -257,7 +262,8 @@ static inline edge_t *find_edge(set *edges, ir_node *n1, ir_node *n2) {
        return set_find(edges, &new_edge, sizeof(new_edge), HASH_EDGE(&new_edge));
 }
 
-static inline void remove_edge(set *edges, ir_node *n1, ir_node *n2, int *counter) {
+static inline void remove_edge(set *edges, ir_node *n1, ir_node *n2, int *counter)
+{
        edge_t new_edge, *e;
 
        if (PTR_TO_INT(n1) < PTR_TO_INT(n2)) {
@@ -275,14 +281,15 @@ static inline void remove_edge(set *edges, ir_node *n1, ir_node *n2, int *counte
        }
 }
 
-#define pset_foreach(pset, irn)  for(irn=pset_first(pset); irn; irn=pset_next(pset))
+#define pset_foreach(pset, irn)  for (irn=pset_first(pset); irn; irn=pset_next(pset))
 
 /**
  * Search for an interference clique and an external node
  * with affinity edges to all nodes of the clique.
  * At most 1 node of the clique can be colored equally with the external node.
  */
-static void build_clique_star_cstr(ilp_env_t *ienv) {
+static void build_clique_star_cstr(ilp_env_t *ienv)
+{
        affinity_node_t *aff;
 
        /* for each node with affinity edges */
@@ -396,7 +403,8 @@ static void build_clique_star_cstr(ilp_env_t *ienv) {
 }
 
 
-static void extend_path(ilp_env_t *ienv, pdeq *path, const ir_node *irn) {
+static void extend_path(ilp_env_t *ienv, pdeq *path, const ir_node *irn)
+{
        be_ifg_t *ifg = ienv->co->cenv->ifg;
        int i, len;
        ir_node **curr_path;
@@ -467,7 +475,8 @@ end:
  *  edges in between.
  *  Then at least one of these affinity edges must break.
  */
-static void build_path_cstr(ilp_env_t *ienv) {
+static void build_path_cstr(ilp_env_t *ienv)
+{
        affinity_node_t *aff_info;
 
        /* for each node with affinity edges */
@@ -480,7 +489,8 @@ static void build_path_cstr(ilp_env_t *ienv) {
        }
 }
 
-static void ilp2_build(ilp_env_t *ienv) {
+static void ilp2_build(ilp_env_t *ienv)
+{
        local_env_t *lenv = ienv->env;
        int lower_bound;
 
@@ -496,7 +506,8 @@ static void ilp2_build(ilp_env_t *ienv) {
        lpp_set_time_limit(ienv->lp, lenv->time_limit);
 }
 
-static void ilp2_apply(ilp_env_t *ienv) {
+static void ilp2_apply(ilp_env_t *ienv)
+{
        local_env_t *lenv = ienv->env;
        int i;
 
@@ -540,6 +551,7 @@ static void ilp2_apply(ilp_env_t *ienv) {
 #endif
 }
 
+BE_REGISTER_MODULE_CONSTRUCTOR(be_init_copyilp2);
 void be_init_copyilp2(void)
 {
        static co_algo_info copyheur = {
@@ -549,9 +561,8 @@ void be_init_copyilp2(void)
        be_register_copyopt("ilp", &copyheur);
 }
 
-BE_REGISTER_MODULE_CONSTRUCTOR(be_init_copyilp2);
-
-int co_solve_ilp2(copy_opt_t *co) {
+int co_solve_ilp2(copy_opt_t *co)
+{
        lpp_sol_state_t sol_state;
        ilp_env_t *ienv;
        local_env_t my;
@@ -568,7 +579,7 @@ int co_solve_ilp2(copy_opt_t *co) {
        my.normal_colors = bitset_alloca(arch_register_class_n_regs(co->cls));
        bitset_clear_all(my.normal_colors);
        arch_put_non_ignore_regs(co->cls, my.normal_colors);
-       my.n_colors = bitset_popcnt(my.normal_colors);
+       my.n_colors = bitset_popcount(my.normal_colors);
 
        ienv = new_ilp_env(co, ilp2_build, ilp2_apply, &my);
 
@@ -582,7 +593,8 @@ int co_solve_ilp2(copy_opt_t *co) {
 
 #else /* WITH_ILP */
 
-static inline void only_that_you_can_compile_without_WITH_ILP_defined(void) {
+static inline void only_that_you_can_compile_without_WITH_ILP_defined(void)
+{
 }
 
 #endif /* WITH_ILP */