shouldn't be here anymore
[libfirm] / ir / be / bechordal.c
index 3246d43..d9d5506 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * Copyright (C) 1995-2007 University of Karlsruhe.  All right reserved.
+ * Copyright (C) 1995-2008 University of Karlsruhe.  All right reserved.
  *
  * This file is part of libFirm.
  *
@@ -157,7 +157,7 @@ static INLINE border_t *border_add(be_chordal_env_t *env, struct list_head *head
        else {
                b = get_irn_link(irn);
 
-               assert(b && b->magic == BORDER_FOURCC && "Illegal border encountered");
+               DEBUG_ONLY(assert(b && b->magic == BORDER_FOURCC && "Illegal border encountered"));
        }
 
        b->pressure = pressure;
@@ -293,6 +293,11 @@ static ir_node *prepare_constr_insn(be_chordal_env_t *env, ir_node *irn)
                        if(a_op->carrier != op->carrier || !a_op->has_constraints)
                                continue;
 
+                       /* if the constraint is the same, no copy is necessary
+                        * TODO generalise unequal but overlapping constraints */
+                       if (a_op->req == op->req)
+                               continue;
+
                        if (be_is_Copy(get_irn_n(insn->irn, a_op->pos)))
                                continue;
 
@@ -1007,6 +1012,8 @@ void be_ra_chordal_color(be_chordal_env_t *chordal_env)
        env.in_colors     = bitset_alloca(colors_n);
        env.pre_colored   = pset_new_ptr_default();
 
+       BE_TIMER_PUSH(t_constr);
+
        /* Handle register targeting constraints */
        dom_tree_walk_irg(irg, constraints, NULL, &env);
 
@@ -1015,6 +1022,8 @@ void be_ra_chordal_color(be_chordal_env_t *chordal_env)
                be_dump(chordal_env->irg, buf, dump_ir_block_graph_sched);
        }
 
+       BE_TIMER_POP(t_constr);
+
        env.live = bitset_malloc(get_irg_last_idx(chordal_env->irg));
 
        /* First, determine the pressure */