besched: Add and use sched_replace().
[libfirm] / ir / be / becopyilp2.c
index 149fe24..95e6b42 100644 (file)
@@ -45,7 +45,9 @@
  */
 #include "config.h"
 
+#include "be_t.h"
 #include "bitset.h"
+#include "error.h"
 #include "raw_bitset.h"
 #include "pdeq.h"
 
@@ -68,11 +70,8 @@ static unsigned check_alignment_constraints(ir_node *node)
 {
        const arch_register_req_t *req = arch_get_irn_register_req(node);
        // For larger than 1 variables, support only aligned constraints
-       assert(((!(req->type & arch_register_req_type_aligned)
-                        && req->width == 1)
-                       || (req->type & arch_register_req_type_aligned))
-                  && "Unaligned large (width > 1) variables not supported");
-       return (req->type & arch_register_req_type_aligned) && req->width > 1;
+       assert((arch_register_req_is(req, aligned) || req->width == 1) && "Unaligned large (width > 1) variables not supported");
+       return arch_register_req_is(req, aligned) && req->width > 1;
 }
 
 static void make_color_var_name(char *buf, size_t buf_size,
@@ -89,12 +88,10 @@ static void build_coloring_cstr(ilp_env_t *ienv)
        unsigned        n_regs = arch_register_class_n_regs(ienv->co->cls);
        const unsigned *allocatable_colors = lenv->allocatable_colors;
        nodes_iter_t    iter;
-       unsigned       *colors;
        ir_node        *irn;
        char            buf[32];
 
-       rbitset_alloca(colors, n_regs);
-
+       unsigned *const colors = rbitset_alloca(n_regs);
        be_ifg_foreach_node(ifg, &iter, irn) {
                const arch_register_req_t *req;
                unsigned                   col;
@@ -240,7 +237,6 @@ static void make_affinity_var_name(char *buf, size_t buf_size,
 static void build_affinity_cstr(ilp_env_t *ienv)
 {
        unsigned  n_colors = arch_register_class_n_regs(ienv->co->cls);
-       unit_t   *curr;
 
        /* for all optimization units */
        list_for_each_entry(unit_t, curr, &ienv->co->units, units) {
@@ -348,7 +344,7 @@ static inline void remove_edge(set *edges, ir_node *n1, ir_node *n2, size_t *cou
        }
 }
 
-#define pset_foreach(pset, irn) foreach_pset((pset), ir_node*, (irn))
+#define pset_foreach(pset, irn) foreach_pset((pset), ir_node, (irn))
 
 /**
  * Search for an interference clique and an external node
@@ -616,7 +612,6 @@ static void ilp2_apply(ilp_env_t *ienv)
  */
 static int co_solve_ilp2(copy_opt_t *co)
 {
-       unsigned       *allocatable_colors;
        unsigned        n_regs = arch_register_class_n_regs(co->cls);
        lpp_sol_state_t sol_state;
        ilp_env_t      *ienv;
@@ -629,7 +624,7 @@ static int co_solve_ilp2(copy_opt_t *co)
        my.last_x_var  = -1;
        FIRM_DBG_REGISTER(dbg, "firm.be.coilp2");
 
-       rbitset_alloca(allocatable_colors, n_regs);
+       unsigned *const allocatable_colors = rbitset_alloca(n_regs);
        be_set_allocatable_regs(co->irg, co->cls, allocatable_colors);
        my.allocatable_colors = allocatable_colors;