Commit fa66e6b8 authored by Christoph Mallon's avatar Christoph Mallon
Browse files

bearch: Use arch_register_req_is(req, ignore) instead of...

bearch: Use arch_register_req_is(req, ignore) instead of arch_irn_is_ignore(...), if we use the register requirements multiple times.
parent c3ce3973
......@@ -241,15 +241,13 @@ void free_copy_opt(copy_opt_t *co)
*/
static int co_is_optimizable_root(ir_node *irn)
{
const arch_register_req_t *req;
if (arch_irn_is_ignore(irn))
arch_register_req_t const *const req = arch_get_irn_register_req(irn);
if (arch_register_req_is(req, ignore))
return 0;
if (is_Reg_Phi(irn) || is_Perm_Proj(irn))
return 1;
req = arch_get_irn_register_req(irn);
if (arch_register_req_is(req, should_be_same))
return 1;
......@@ -817,7 +815,7 @@ static void build_graph_walker(ir_node *irn, void *env)
if (get_irn_mode(irn) == mode_T)
return;
req = arch_get_irn_register_req(irn);
if (req->cls != co->cls || arch_irn_is_ignore(irn))
if (req->cls != co->cls || arch_register_req_is(req, ignore))
return;
if (is_Reg_Phi(irn)) { /* Phis */
......@@ -940,35 +938,36 @@ static void co_dump_appel_graph(const copy_opt_t *co, FILE *f)
fprintf(f, "%d %d\n", n, n_regs);
be_ifg_foreach_node(ifg, &it, irn) {
if (!arch_irn_is_ignore(irn)) {
int idx = node_map[get_irn_idx(irn)];
affinity_node_t *a = get_affinity_info(co, irn);
const arch_register_req_t *req = arch_get_irn_register_req(irn);
ir_node *adj;
if (arch_register_req_is(req, limited)) {
for (i = 0; i < co->cls->n_regs; ++i) {
if (!rbitset_is_set(req->limited, i) && color_map[i] >= 0)
fprintf(f, "%d %d -1\n", color_map[i], idx);
}
arch_register_req_t const *const req = arch_get_irn_register_req(irn);
if (arch_register_req_is(req, ignore))
continue;
int idx = node_map[get_irn_idx(irn)];
affinity_node_t *a = get_affinity_info(co, irn);
ir_node *adj;
if (arch_register_req_is(req, limited)) {
for (i = 0; i < co->cls->n_regs; ++i) {
if (!rbitset_is_set(req->limited, i) && color_map[i] >= 0)
fprintf(f, "%d %d -1\n", color_map[i], idx);
}
}
be_ifg_foreach_neighbour(ifg, &nit, irn, adj) {
if (!arch_irn_is_ignore(adj) &&
!co_dump_appel_disjoint_constraints(co, irn, adj)) {
int adj_idx = node_map[get_irn_idx(adj)];
if (idx < adj_idx)
fprintf(f, "%d %d -1\n", idx, adj_idx);
}
be_ifg_foreach_neighbour(ifg, &nit, irn, adj) {
if (!arch_irn_is_ignore(adj) &&
!co_dump_appel_disjoint_constraints(co, irn, adj)) {
int adj_idx = node_map[get_irn_idx(adj)];
if (idx < adj_idx)
fprintf(f, "%d %d -1\n", idx, adj_idx);
}
}
if (a) {
co_gs_foreach_neighb(a, n) {
if (!arch_irn_is_ignore(n->irn)) {
int n_idx = node_map[get_irn_idx(n->irn)];
if (idx < n_idx)
fprintf(f, "%d %d %d\n", idx, n_idx, (int) n->costs);
}
if (a) {
co_gs_foreach_neighb(a, n) {
if (!arch_irn_is_ignore(n->irn)) {
int n_idx = node_map[get_irn_idx(n->irn)];
if (idx < n_idx)
fprintf(f, "%d %d %d\n", idx, n_idx, (int) n->costs);
}
}
}
......
......@@ -507,7 +507,8 @@ static void gen_assure_different_pattern(ir_node *irn, ir_node *other_different,
ir_node *keep, *cpy;
op_copy_assoc_t *entry;
if (arch_irn_is_ignore(other_different) ||
arch_register_req_t const *const req = arch_get_irn_register_req(other_different);
if (arch_register_req_is(req, ignore) ||
!mode_is_datab(get_irn_mode(other_different))) {
DB((dbg_constr, LEVEL_1, "ignore constraint for %+F because other_irn is ignore or not a datab node\n", irn));
return;
......@@ -515,7 +516,7 @@ static void gen_assure_different_pattern(ir_node *irn, ir_node *other_different,
op_set = &env->op_set;
block = get_nodes_block(irn);
cls = arch_get_irn_reg_class(other_different);
cls = req->cls;
/* Make a not spillable copy of the different node */
/* this is needed because the different irn could be */
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment