{
if (env->ifg)
return be_ifg_connected(env->ifg, a, b);
- else
- return be_values_interfere(env->birg->lv, a, b);
+ else {
+ be_lv_t *lv = be_get_irg_liveness(env->irg);
+ return be_values_interfere(lv, a, b);
+ }
}
static int set_cmp_conflict_t(const void *x, const void *y, size_t size)
int irn_col = qnode_get_new_color(qn, irn);
ir_node *sub_res, *curr;
be_ifg_t *ifg = chordal_env->ifg;
- void *iter = be_ifg_neighbours_iter_alloca(ifg);
+ neighbours_iter_t iter;
DBG((dbg, LEVEL_3, "\t %+F \tcaused col(%+F) \t%2d --> %2d\n", trigger, irn, irn_col, col));
bitset_clear(free_cols, irn_col);
/* Exclude all colors used by adjacent nodes */
- be_ifg_foreach_neighbour(ifg, iter, irn, curr)
+ be_ifg_foreach_neighbour(ifg, &iter, irn, curr)
bitset_clear(free_cols, qnode_get_new_color(qn, curr));
free_col = bitset_next_set(free_cols, 0);
* If we arrive here changing color may be possible, but there may be conflicts.
* Try to color all conflicting nodes 'curr' with the color of the irn itself.
*/
- be_ifg_foreach_neighbour(ifg, iter, irn, curr) {
+ be_ifg_foreach_neighbour(ifg, &iter, irn, curr) {
DBG((dbg, LEVEL_3, "\t Confl %+F(%d)\n", curr, qnode_get_new_color(qn, curr)));
if (qnode_get_new_color(qn, curr) == col && curr != trigger) {
sub_res = qnode_color_irn(qn, curr, irn_col, irn);
if (sub_res != CHANGE_SAVE) {
- be_ifg_neighbours_break(ifg, iter);
+ be_ifg_neighbours_break(&iter);
return sub_res;
}
}
ir_node **safe, **unsafe;
int i, o, safe_count, safe_costs, unsafe_count, *unsafe_costs;
bitset_t *curr, *best;
- bitset_pos_t pos;
+ unsigned pos;
int next, curr_weight, best_weight = 0;
/* assign the nodes into two groups.
qnode_t *tmp;
const arch_register_req_t *req;
bitset_t const* ignore;
- bitset_pos_t n_regs;
- bitset_pos_t idx;
+ unsigned n_regs;
+ unsigned idx;
int i;
DBG((dbg, LEVEL_1, "\tOptimizing unit:\n"));
ignore = ou->co->cenv->ignore_colors;
n_regs = req->cls->n_regs;
if (arch_register_req_is(req, limited)) {
- rawbs_base_t const* limited = req->limited;
+ unsigned const* limited = req->limited;
for (idx = 0; idx != n_regs; ++idx) {
if (bitset_is_set(ignore, idx))