X-Git-Url: http://nsz.repo.hu/git/?a=blobdiff_plain;f=ir%2Fkaps%2Foptimal.c;h=802534c589e22e653ba10f93d2290502aa86ee16;hb=2ee064e0f2a03bbdbdb51839cfd852b9fc6f1079;hp=758de05af502c87c8e9d06608d5c405f4875e3ed;hpb=394e57f6722f23a9744e9eb307833bc2084aff4a;p=libfirm diff --git a/ir/kaps/optimal.c b/ir/kaps/optimal.c index 758de05af..802534c58 100644 --- a/ir/kaps/optimal.c +++ b/ir/kaps/optimal.c @@ -22,7 +22,6 @@ * @brief Optimal reductions and helper functions. * @date 28.12.2009 * @author Sebastian Buchwald - * @version $Id$ */ #include "config.h" @@ -47,7 +46,7 @@ #include "timing.h" pbqp_edge_t **edge_bucket; -pbqp_edge_t **rm_bucket; +static pbqp_edge_t **rm_bucket; pbqp_node_t **node_buckets[4]; pbqp_node_t **reduced_bucket = NULL; pbqp_node_t *merged_node = NULL; @@ -271,7 +270,6 @@ static void merge_source_into_target(pbqp_t *pbqp, pbqp_edge_t *edge) unsigned *mapping; unsigned src_len; unsigned tgt_len; - unsigned src_index; unsigned tgt_index; unsigned edge_index; unsigned edge_len; @@ -296,6 +294,7 @@ static void merge_source_into_target(pbqp_t *pbqp, pbqp_edge_t *edge) /* Check that each column has at most one zero entry. */ for (tgt_index = 0; tgt_index < tgt_len; ++tgt_index) { unsigned onlyOneZero = 0; + unsigned src_index; if (tgt_vec->entries[tgt_index].data == INF_COSTS) continue; @@ -329,7 +328,7 @@ static void merge_source_into_target(pbqp_t *pbqp, pbqp_edge_t *edge) if (pbqp->dump_file) { char txt[100]; sprintf(txt, "Merging n%d into n%d", src_node->index, tgt_node->index); - dump_section(pbqp->dump_file, 3, txt); + pbqp_dump_section(pbqp->dump_file, 3, txt); } #endif @@ -343,7 +342,6 @@ static void merge_source_into_target(pbqp_t *pbqp, pbqp_edge_t *edge) vector_t *other_vec; unsigned other_len; unsigned other_index; - unsigned tgt_index; assert(old_edge); if (old_edge == edge) @@ -435,7 +433,6 @@ static void merge_target_into_source(pbqp_t *pbqp, pbqp_edge_t *edge) unsigned src_len; unsigned tgt_len; unsigned src_index; - unsigned tgt_index; unsigned edge_index; unsigned edge_len; @@ -459,6 +456,7 @@ static void merge_target_into_source(pbqp_t *pbqp, pbqp_edge_t *edge) /* Check that each row has at most one zero entry. */ for (src_index = 0; src_index < src_len; ++src_index) { unsigned onlyOneZero = 0; + unsigned tgt_index; if (src_vec->entries[src_index].data == INF_COSTS) continue; @@ -492,7 +490,7 @@ static void merge_target_into_source(pbqp_t *pbqp, pbqp_edge_t *edge) if (pbqp->dump_file) { char txt[100]; sprintf(txt, "Merging n%d into n%d", tgt_node->index, src_node->index); - dump_section(pbqp->dump_file, 3, txt); + pbqp_dump_section(pbqp->dump_file, 3, txt); } #endif @@ -506,7 +504,6 @@ static void merge_target_into_source(pbqp_t *pbqp, pbqp_edge_t *edge) vector_t *other_vec; unsigned other_len; unsigned other_index; - unsigned src_index; assert(old_edge); @@ -676,7 +673,7 @@ void simplify_edge(pbqp_t *pbqp, pbqp_edge_t *edge) if (pbqp->dump_file) { char txt[100]; sprintf(txt, "Simplification of Edge n%d-n%d", src_node->index, tgt_node->index); - dump_section(pbqp->dump_file, 3, txt); + pbqp_dump_section(pbqp->dump_file, 3, txt); } #endif @@ -693,7 +690,7 @@ void simplify_edge(pbqp_t *pbqp, pbqp_edge_t *edge) #if KAPS_DUMP if (pbqp->dump_file) { fputs("Input:
\n", pbqp->dump_file); - dump_simplifyedge(pbqp, edge); + pbqp_dump_simplifyedge(pbqp, edge); } #endif @@ -703,7 +700,7 @@ void simplify_edge(pbqp_t *pbqp, pbqp_edge_t *edge) #if KAPS_DUMP if (pbqp->dump_file) { fputs("
\nOutput:
\n", pbqp->dump_file); - dump_simplifyedge(pbqp, edge); + pbqp_dump_simplifyedge(pbqp, edge); } #endif @@ -735,7 +732,7 @@ void initial_simplify_edges(pbqp_t *pbqp) #if KAPS_DUMP if (pbqp->dump_file) { pbqp_dump_input(pbqp); - dump_section(pbqp->dump_file, 1, "2. Simplification of Cost Matrices"); + pbqp_dump_section(pbqp->dump_file, 1, "2. Simplification of Cost Matrices"); } #endif @@ -792,8 +789,8 @@ num determine_solution(pbqp_t *pbqp) file = pbqp->dump_file; if (file) { - dump_section(file, 1, "4. Determine Solution/Minimum"); - dump_section(file, 2, "4.1. Trivial Solution"); + pbqp_dump_section(file, 1, "4. Determine Solution/Minimum"); + pbqp_dump_section(file, 2, "4.1. Trivial Solution"); } #endif @@ -814,14 +811,14 @@ num determine_solution(pbqp_t *pbqp) #if KAPS_DUMP if (file) { fprintf(file, "node n%d is set to %d
\n", node->index, node->solution); - dump_node(file, node); + pbqp_dump_node(file, node); } #endif } #if KAPS_DUMP if (file) { - dump_section(file, 2, "Minimum"); + pbqp_dump_section(file, 2, "Minimum"); #if KAPS_USE_UNSIGNED fprintf(file, "Minimum is equal to %u.", solution); #else @@ -951,7 +948,7 @@ void back_propagate(pbqp_t *pbqp) #if KAPS_DUMP if (pbqp->dump_file) { - dump_section(pbqp->dump_file, 2, "Back Propagation"); + pbqp_dump_section(pbqp->dump_file, 2, "Back Propagation"); } #endif @@ -967,7 +964,6 @@ void back_propagate(pbqp_t *pbqp) break; default: panic("Only nodes with degree one or two should be in this bucket"); - break; } } } @@ -1000,12 +996,12 @@ void apply_RI(pbqp_t *pbqp) if (pbqp->dump_file) { char txt[100]; sprintf(txt, "RI-Reduction of Node n%d", node->index); - dump_section(pbqp->dump_file, 2, txt); + pbqp_dump_section(pbqp->dump_file, 2, txt); pbqp_dump_graph(pbqp); fputs("
\nBefore reduction:
\n", pbqp->dump_file); - dump_node(pbqp->dump_file, node); - dump_node(pbqp->dump_file, other_node); - dump_edge(pbqp->dump_file, edge); + pbqp_dump_node(pbqp->dump_file, node); + pbqp_dump_node(pbqp->dump_file, other_node); + pbqp_dump_edge(pbqp->dump_file, edge); } #endif @@ -1021,7 +1017,7 @@ void apply_RI(pbqp_t *pbqp) #if KAPS_DUMP if (pbqp->dump_file) { fputs("
\nAfter reduction:
\n", pbqp->dump_file); - dump_node(pbqp->dump_file, other_node); + pbqp_dump_node(pbqp->dump_file, other_node); } #endif @@ -1056,7 +1052,6 @@ void apply_RII(pbqp_t *pbqp) unsigned col_len; unsigned row_index; unsigned row_len; - unsigned node_len; assert(pbqp_node_get_degree(node) == 2); @@ -1093,14 +1088,14 @@ void apply_RII(pbqp_t *pbqp) if (pbqp->dump_file) { char txt[100]; sprintf(txt, "RII-Reduction of Node n%d", node->index); - dump_section(pbqp->dump_file, 2, txt); + pbqp_dump_section(pbqp->dump_file, 2, txt); pbqp_dump_graph(pbqp); fputs("
\nBefore reduction:
\n", pbqp->dump_file); - dump_node(pbqp->dump_file, src_node); - dump_edge(pbqp->dump_file, src_edge); - dump_node(pbqp->dump_file, node); - dump_edge(pbqp->dump_file, tgt_edge); - dump_node(pbqp->dump_file, tgt_node); + pbqp_dump_node(pbqp->dump_file, src_node); + pbqp_dump_edge(pbqp->dump_file, src_edge); + pbqp_dump_node(pbqp->dump_file, node); + pbqp_dump_edge(pbqp->dump_file, tgt_edge); + pbqp_dump_node(pbqp->dump_file, tgt_node); } #endif @@ -1113,7 +1108,6 @@ void apply_RII(pbqp_t *pbqp) row_len = src_vec->len; col_len = tgt_vec->len; - node_len = node_vec->len; mat = pbqp_matrix_alloc(pbqp, row_len, col_len); @@ -1168,7 +1162,7 @@ void apply_RII(pbqp_t *pbqp) #if KAPS_DUMP if (pbqp->dump_file) { fputs("
\nAfter reduction:
\n", pbqp->dump_file); - dump_edge(pbqp->dump_file, edge); + pbqp_dump_edge(pbqp->dump_file, edge); } #endif @@ -1232,14 +1226,12 @@ static void select_column(pbqp_edge_t *edge, unsigned col_index) static void select_row(pbqp_edge_t *edge, unsigned row_index) { pbqp_matrix_t *mat; - pbqp_node_t *src_node; pbqp_node_t *tgt_node; vector_t *tgt_vec; unsigned tgt_len; unsigned tgt_index; unsigned new_infinity = 0; - src_node = edge->src; tgt_node = edge->tgt; tgt_vec = tgt_node->costs;