X-Git-Url: http://nsz.repo.hu/git/?a=blobdiff_plain;f=ir%2Fbe%2Fmips%2Fmips_new_nodes.c;h=ad8ce10bc0d85d49f879d1bac46f41d27885f87f;hb=be8b3b023b424af04a93c389d1a7672e1717a98e;hp=c390794d7bad77c9954ab26aaa2b29234f36355c;hpb=9fcd5f662056f33a38dbd39f59dc5125718e04ed;p=libfirm diff --git a/ir/be/mips/mips_new_nodes.c b/ir/be/mips/mips_new_nodes.c index c390794d7..ad8ce10bc 100644 --- a/ir/be/mips/mips_new_nodes.c +++ b/ir/be/mips/mips_new_nodes.c @@ -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. * @@ -94,13 +94,27 @@ static void dump_reg_req(FILE *F, ir_node *n, const arch_register_req_t **reqs, } if (reqs[i]->type & arch_register_req_type_should_be_same) { - ir_fprintf(F, " same as %+F", get_irn_n(n, reqs[i]->other_same[0])); - if (reqs[i]->other_same[1] != -1) - ir_fprintf(F, " or %+F", get_irn_n(n, reqs[i]->other_same[1])); + const unsigned other = reqs[i]->other_same; + int i; + + ir_fprintf(F, " same as"); + for (i = 0; 1U << i <= other; ++i) { + if (other & (1U << i)) { + ir_fprintf(F, " %+F", i); + } + } } if (reqs[i]->type & arch_register_req_type_should_be_different) { - ir_fprintf(F, " different from %+F", get_irn_n(n, reqs[i]->other_different)); + const unsigned other = reqs[i]->other_different; + int i; + + ir_fprintf(F, " different from"); + for (i = 0; 1U << i <= other; ++i) { + if (other & (1U << i)) { + ir_fprintf(F, " %+F", i); + } + } } fprintf(F, "\n"); @@ -393,13 +407,12 @@ static void init_mips_attributes(ir_node *node, arch_irn_flags_t flags, const arch_register_req_t **in_reqs, const arch_register_req_t **out_reqs, const be_execution_unit_t ***execution_units, - int n_res, unsigned latency) + int n_res) { ir_graph *irg = get_irn_irg(node); struct obstack *obst = get_irg_obstack(irg); mips_attr_t *attr = get_mips_attr(node); (void) execution_units; - (void) latency; attr->flags = flags; attr->out_req = out_reqs;