projects
/
libfirm
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
fixed indentation, deleted useless comment
[libfirm]
/
ir
/
be
/
bechordal.c
diff --git
a/ir/be/bechordal.c
b/ir/be/bechordal.c
index
3246d43
..
d9d5506
100644
(file)
--- a/
ir/be/bechordal.c
+++ b/
ir/be/bechordal.c
@@
-1,5
+1,5
@@
/*
/*
- * Copyright (C) 1995-200
7
University of Karlsruhe. All right reserved.
+ * Copyright (C) 1995-200
8
University of Karlsruhe. All right reserved.
*
* This file is part of libFirm.
*
*
* 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);
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;
}
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(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;
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();
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);
/* 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_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 */
env.live = bitset_malloc(get_irg_last_idx(chordal_env->irg));
/* First, determine the pressure */