-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);
- 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)
- if (!sr_is_removed(ienv->sr, irn)) {
- int col, cst_idx;
- arch_register_req_t req;
- int curr_node_color = get_irn_col(ienv->co, irn);
- int node_nr = (int)get_irn_node_nr(irn);
- local_env_t *lenv = ienv->env;
-
- pmap_insert(lenv->nr_2_irn, INT_TO_PTR(node_nr), irn);
-
- arch_get_register_req(ienv->co->aenv, &req, irn, -1);
-
- /* get assignable colors */
- if (arch_register_req_is(&req, limited))
- req.limited(req.limited_env, colors);
- else {
- arch_register_class_put(req.cls, colors);
- // bitset_andnot(colors, ienv->co->cenv->ignore_colors);
- }
+static void make_color_var_name(char *buf, size_t buf_size,
+ const ir_node *node, unsigned color)
+{
+ unsigned node_idx = get_irn_idx(node);
+ snprintf(buf, buf_size, "x_%u_%u", node_idx, color);
+}
+
+static void build_coloring_cstr(ilp_env_t *ienv)
+{
+ local_env_t *lenv = ienv->env;
+ be_ifg_t *ifg = ienv->co->cenv->ifg;
+ 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);
+
+ be_ifg_foreach_node(ifg, &iter, irn) {
+ const arch_register_req_t *req;
+ unsigned col;
+ int cst_idx;
+ unsigned curr_node_color;
+
+ if (sr_is_removed(ienv->sr, irn))
+ continue;