X-Git-Url: http://nsz.repo.hu/git/?a=blobdiff_plain;f=kaps.c;h=a948cb73cb267d298360b4e596bdb89dd7f55a11;hb=ca2ff2b33005c39b8f8b0b9ee9c35ef082619225;hp=3fcd1395cd8e7f009f72d94571f262eba6f2ec95;hpb=500b49a936010d1dddeca622bacc5e233ca602f9;p=libfirm diff --git a/kaps.c b/kaps.c index 3fcd1395c..a948cb73c 100644 --- a/kaps.c +++ b/kaps.c @@ -25,14 +25,15 @@ pbqp_edge *get_edge(pbqp *pbqp, unsigned src_index, unsigned tgt_index) } pbqp_node *src_node = get_node(pbqp, src_index); + pbqp_node *tgt_node = get_node(pbqp, tgt_index); assert(src_node); - assert(get_node(pbqp, tgt_index)); + assert(tgt_node); len = ARR_LEN(src_node->edges); for (i = 0; i < len; ++i) { pbqp_edge *cur_edge = src_node->edges[i]; - if (cur_edge->tgt->index == tgt_index) { + if (cur_edge->tgt == tgt_node) { return cur_edge; } } @@ -48,10 +49,20 @@ pbqp *alloc_pbqp(unsigned number_nodes) pbqp->solution = 0; pbqp->num_nodes = number_nodes; +#if KAPS_DUMP pbqp->dump_file = NULL; +#endif pbqp->nodes = obstack_alloc(&pbqp->obstack, number_nodes * sizeof(*pbqp->nodes)); memset(pbqp->nodes, 0, number_nodes * sizeof(*pbqp->nodes)); +#if KAPS_STATISTIC + pbqp->num_bf = 0; + pbqp->num_edges = 0; + pbqp->num_r0 = 0; + pbqp->num_r1 = 0; + pbqp->num_r2 = 0; + pbqp->num_rn = 0; +#endif return pbqp; } @@ -79,6 +90,12 @@ void add_edge_costs(pbqp *pbqp, unsigned src_index, unsigned tgt_index, { pbqp_edge *edge = get_edge(pbqp, src_index, tgt_index); + if (tgt_index < src_index) { + pbqp_matrix_transpose(pbqp, costs); + add_edge_costs(pbqp, tgt_index, src_index, costs); + return; + } + if (edge == NULL) { edge = alloc_edge(pbqp, src_index, tgt_index, costs); } else { @@ -99,8 +116,10 @@ num get_solution(pbqp *pbqp) return pbqp->solution; } +#if KAPS_DUMP void set_dumpfile(pbqp *pbqp, FILE *f) { assert(pbqp); pbqp->dump_file = f; } +#endif