From 87387f7092457412fde74ab4f75368966e9baec2 Mon Sep 17 00:00:00 2001 From: Daniel Grund Date: Tue, 7 Mar 2006 10:25:19 +0000 Subject: [PATCH] Added checker --- ir/be/beraextern.c | 29 +++++++++++++++++++++++++++++ 1 file changed, 29 insertions(+) diff --git a/ir/be/beraextern.c b/ir/be/beraextern.c index 90cb9c2cd..ac3807062 100644 --- a/ir/be/beraextern.c +++ b/ir/be/beraextern.c @@ -852,6 +852,33 @@ static int read_and_apply_results(be_raext_env_t *raenv, char *filename) { return is_allocation; } +static void check_allocation(be_raext_env_t *raenv) { + int i, o; + + for (i=0; in_cls_vars; ++i) { + var_info_t *vi1 = raenv->cls_vars[i]; + + if (vi1->var_nr == SET_REMOVED) + continue; + + for (o=0; ocls_vars[o]; + ir_node *irn1, *irn2; + + if (vi2->var_nr == SET_REMOVED) + continue; + + pset_foreach(vi1->values, irn1) + pset_foreach(vi2->values, irn2) + if (values_interfere(irn1, irn2)) { + dump_ir_block_graph_sched(raenv->irg, "ERROR"); + ir_fprintf(stdout, "SSA values %+F and %+F interfere. They belong to varible %d and %d respectively.\n", irn1, irn2, vi1->var_nr, vi2->var_nr); + assert(0 && "ERROR graph dumped"); + } + } + } +} + /****************************************************************************** __ __ _ | \/ | (_) @@ -934,6 +961,8 @@ static void be_ra_extern_main(const be_irg_t *bi) { round++; } while (!done); + check_allocation(&raenv); + free(raenv.cls_vars); } -- 2.20.1