X-Git-Url: http://nsz.repo.hu/git/?a=blobdiff_plain;f=ir%2Fbe%2Fberaextern.c;h=d4fdb352b6bf2c246c6093e411f0b8626e6510c4;hb=8974b94349462d835b33ad4f896d1821986458bd;hp=0ec86e835509d177732c9d2b6b073275dc656b4a;hpb=4f403660a6fcd21191bae7cf816bcbd013b28de6;p=libfirm diff --git a/ir/be/beraextern.c b/ir/be/beraextern.c index 0ec86e835..d4fdb352b 100644 --- a/ir/be/beraextern.c +++ b/ir/be/beraextern.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. * @@ -78,8 +78,8 @@ alloc ::= node-nr reg-nr . #include #include #include -#include -#include +#include "lc_opts.h" +#include "lc_opts_enum.h" #include "set.h" #include "pset.h" @@ -427,13 +427,18 @@ static void dump_affinities_walker(ir_node *irn, void *env) { /* should_be_equal constraints are affinites */ for (pos = 0, max = get_irn_arity(irn); posaenv, irn, pos); - if (arch_register_req_is(req, should_be_same)) { - ir_node *other = get_irn_n(irn, req->other_same); - if(arch_irn_is(raenv->aenv, other, ignore)) { - vi2 = be_get_var_info(other); + const int* i; + for (i = req->other_same; i != ENDOF(req->other_same); ++i) { + ir_node *other; + + if (*i == -1) break; - fprintf(raenv->f, "(%d, %d, %d)\n", vi1->var_nr, vi2->var_nr, get_affinity_weight(irn)); + other = get_irn_n(skip_Proj(irn), *i); + if(arch_irn_is(raenv->aenv, other, ignore)) { + vi2 = be_get_var_info(other); + fprintf(raenv->f, "(%d, %d, %d)\n", vi1->var_nr, vi2->var_nr, get_affinity_weight(irn)); + } } } } @@ -455,8 +460,7 @@ static void dump_to_file(be_raext_env_t *raenv, char *filename) { if (!(f = fopen(filename, "wt"))) { fprintf(stderr, "Could not open file %s for writing\n", filename); - assert(0); - exit(0xdeadbeef); + abort(); } raenv->f = f; @@ -625,8 +629,7 @@ static int read_and_apply_results(be_raext_env_t *raenv, char *filename) { if (!(f = fopen(filename, "rt"))) { fprintf(stderr, "Could not open file %s for reading\n", filename); - assert(0); - exit(0xdeadbeef); + abort(); } raenv->f = f; @@ -783,7 +786,7 @@ static void be_ra_extern_main(be_irg_t *birg) { /* Clean up */ free_ssa_destr_simple(raenv.vars); - be_invalidate_liveness(birg); + be_liveness_invalidate(be_get_birg_liveness(birg)); } /******************************************************************************