- int i, slot;
- int n_blocks = get_Block_dom_max_subtree_pre_num(get_irg_start_block(irg));
- tree_layout_info_t *info = malloc(sizeof(info[0]) * n_blocks);
-
- /* Fill the info array. */
- dom_tree_walk_irg(irg, NULL, dump_tree_collect, info);
-
- /* Assign the child slots. */
- for(i = 0, slot = 0; i < n_blocks; ++i) {
- tree_layout_info_t *i = &info[i];
- if(i->is_child) {
- i->child_slot = slot++;
- i->x = i->child_slot * params->max_color * params->interval_dist + params->block_dist;
+ be_chordal_env_t *env = alloc_env->chordal_env;
+ void *base = obstack_base(&env->obst);
+ insn_t *insn = scan_insn(env, irn, &env->obst);
+ ir_node *res = insn->next_insn;
+
+ if(insn->has_constraints) {
+ firm_dbg_module_t *dbg = firm_dbg_register("firm.be.chordal.constr");
+ const arch_env_t *aenv = env->main_env->arch_env;
+ int n_regs = env->cls->n_regs;
+ bitset_t *bs = bitset_alloca(n_regs);
+ ir_node **alloc_nodes = alloca(n_regs * sizeof(alloc_nodes[0]));
+ bipartite_t *bp = bipartite_new(n_regs, n_regs);
+ int *assignment = alloca(n_regs * sizeof(assignment[0]));
+ pmap *partners = pmap_create();
+
+ int i, n_alloc;
+ long col;
+ const ir_edge_t *edge;
+ ir_node *perm = insert_Perm_after(aenv, env->cls, env->dom_front, sched_prev(irn));
+
+ /* Registers are propagated by insert_Perm_after(). Clean them here! */
+ if(perm) {
+ foreach_out_edge(perm, edge) {
+ ir_node *proj = get_edge_src_irn(edge);
+ arch_set_irn_register(aenv, proj, NULL);
+ }