From: Michael Beck Date: Sat, 9 Apr 2011 01:04:25 +0000 (+0200) Subject: C99 features removed. X-Git-Url: http://nsz.repo.hu/git/?a=commitdiff_plain;h=2f6a3ddc84e1023452e7b1301c321567fd3e7407;p=libfirm C99 features removed. --- diff --git a/ir/be/bepbqpcoloring.c b/ir/be/bepbqpcoloring.c index 0d67d4c79..8d4f3dc92 100644 --- a/ir/be/bepbqpcoloring.c +++ b/ir/be/bepbqpcoloring.c @@ -621,7 +621,11 @@ static void be_pbqp_coloring(be_chordal_env_t *env) be_pbqp_alloc_env_t pbqp_alloc_env; unsigned col; unsigned row; - + pbqp_matrix_t *ife_matrix; + num solution; +#if KAPS_DUMP + FILE *file_before; +#endif #if TIMER ir_timer_t *t_ra_pbqp_alloc_create = ir_timer_new(); ir_timer_t *t_ra_pbqp_alloc_solve = ir_timer_new(); @@ -659,7 +663,7 @@ static void be_pbqp_coloring(be_chordal_env_t *env) /* create costs matrix template for interference edges */ - pbqp_matrix_t *ife_matrix = pbqp_matrix_alloc(pbqp_alloc_env.pbqp_inst, colors_n, colors_n); + ife_matrix = pbqp_matrix_alloc(pbqp_alloc_env.pbqp_inst, colors_n, colors_n); /* set costs */ for (row = 0, col = 0; row < colors_n; row++, col++) pbqp_matrix_set(ife_matrix, row, col, INF_COSTS); @@ -709,18 +713,20 @@ static void be_pbqp_coloring(be_chordal_env_t *env) #if KAPS_DUMP // dump graph before solving pbqp - FILE *file_before = my_open(env, "", "-pbqp_coloring.html"); + file_before = my_open(env, "", "-pbqp_coloring.html"); set_dumpfile(pbqp_alloc_env.pbqp_inst, file_before); #endif - /* print out reverse perfect eleminiation order */ + /* print out reverse perfect elimination order */ #if PRINT_RPEO - plist_element_t *elements; - foreach_plist(pbqp_alloc_env.rpeo, elements) { - pbqp_node_t *node = elements->data; - printf(" %d(%lu);", node->index, get_idx_irn(irg, node->index)->node_nr); + { + plist_element_t *elements; + foreach_plist(pbqp_alloc_env.rpeo, elements) { + pbqp_node_t *node = elements->data; + printf(" %d(%ld);", node->index, get_idx_irn(irg, node->index)->node_nr); + } + printf("\n"); } - printf("\n"); #endif /* solve pbqp instance */ @@ -738,7 +744,7 @@ static void be_pbqp_coloring(be_chordal_env_t *env) #endif - num solution = get_solution(pbqp_alloc_env.pbqp_inst); + solution = get_solution(pbqp_alloc_env.pbqp_inst); if (solution == INF_COSTS) panic("No PBQP solution found"); diff --git a/ir/be/ia32/bearch_ia32.c b/ir/be/ia32/bearch_ia32.c index c5ea47916..e1b4c5661 100644 --- a/ir/be/ia32/bearch_ia32.c +++ b/ir/be/ia32/bearch_ia32.c @@ -1258,15 +1258,14 @@ static void introduce_prolog_epilog(ir_graph *irg) ir_mode *mode_gp = mode_Iu; if (!layout->sp_relative) { - layout->initial_bias = -4; - /* push ebp */ ir_node *mem = get_irg_initial_mem(irg); ir_node *noreg = ia32_new_NoReg_gp(irg); ir_node *initial_bp = be_abi_get_ignore_irn(irg, bp); ir_node *curr_bp = initial_bp; - ir_node *push - = new_bd_ia32_Push(NULL, block, noreg, noreg, mem, curr_bp, curr_sp); + ir_node *push = new_bd_ia32_Push(NULL, block, noreg, noreg, mem, curr_bp, curr_sp); + ir_node *incsp; + curr_sp = new_r_Proj(push, mode_gp, pn_ia32_Push_stack); mem = new_r_Proj(push, mode_M, pn_ia32_Push_M); arch_set_irn_register(curr_sp, sp); @@ -1282,10 +1281,12 @@ static void introduce_prolog_epilog(ir_graph *irg) edges_reroute(initial_bp, curr_bp); set_irn_n(push, n_ia32_Push_val, initial_bp); - ir_node *incsp = be_new_IncSP(sp, block, curr_sp, frame_size, 0); + incsp = be_new_IncSP(sp, block, curr_sp, frame_size, 0); edges_reroute(initial_sp, incsp); set_irn_n(push, n_ia32_Push_stack, initial_sp); sched_add_after(curr_sp, incsp); + + layout->initial_bias = -4; } else { ir_node *incsp = be_new_IncSP(sp, block, curr_sp, frame_size, 0); edges_reroute(initial_sp, incsp); diff --git a/ir/kaps/html_dumper.c b/ir/kaps/html_dumper.c index f29a88dd0..d0809eada 100644 --- a/ir/kaps/html_dumper.c +++ b/ir/kaps/html_dumper.c @@ -53,9 +53,9 @@ static const char *cost2a(num const cost) static void dump_vector(FILE *f, vector_t *vec) { unsigned index; + unsigned len = vec->len; fprintf(f, "( "); - unsigned len = vec->len; assert(len > 0); for (index = 0; index < len; ++index) { #if KAPS_ENABLE_VECTOR_NAMES @@ -103,12 +103,13 @@ static void dump_edge_costs(pbqp_t *pbqp) fputs("

", pbqp->dump_file); for (src_index = 0; src_index < pbqp->num_nodes; ++src_index) { pbqp_node_t *src_node = get_node(pbqp, src_index); + unsigned edge_index; + unsigned len; if (!src_node) continue; - unsigned edge_index; - unsigned len = ARR_LEN(src_node->edges); + len = ARR_LEN(src_node->edges); for (edge_index = 0; edge_index < len; ++edge_index) { pbqp_edge_t *edge = src_node->edges[edge_index]; unsigned tgt_index = edge->tgt->index; @@ -160,6 +161,8 @@ void pbqp_dump_graph(pbqp_t *pbqp) for (src_index = 0; src_index < pbqp->num_nodes; ++src_index) { pbqp_node_t *node = get_node(pbqp, src_index); + unsigned len; + unsigned edge_index; if (!node) continue; @@ -167,8 +170,7 @@ void pbqp_dump_graph(pbqp_t *pbqp) if (node_is_reduced(node)) continue; - unsigned len = ARR_LEN(node->edges); - unsigned edge_index; + len = ARR_LEN(node->edges); for (edge_index = 0; edge_index < len; ++edge_index) { pbqp_node_t *tgt_node = node->edges[edge_index]->tgt; unsigned tgt_index = tgt_node->index; diff --git a/ir/kaps/kaps.c b/ir/kaps/kaps.c index 78b4c0d42..63914d11d 100644 --- a/ir/kaps/kaps.c +++ b/ir/kaps/kaps.c @@ -46,6 +46,8 @@ pbqp_edge_t *get_edge(pbqp_t *pbqp, unsigned src_index, unsigned tgt_index) { int i; int len; + pbqp_node_t *src_node; + pbqp_node_t *tgt_node; if (tgt_index < src_index) { unsigned tmp = src_index; @@ -53,8 +55,8 @@ pbqp_edge_t *get_edge(pbqp_t *pbqp, unsigned src_index, unsigned tgt_index) tgt_index = tmp; } - pbqp_node_t *src_node = get_node(pbqp, src_index); - pbqp_node_t *tgt_node = get_node(pbqp, tgt_index); + src_node = get_node(pbqp, src_index); + tgt_node = get_node(pbqp, tgt_index); assert(tgt_node); len = ARR_LEN(src_node->edges); diff --git a/ir/kaps/matrix.c b/ir/kaps/matrix.c index 47c15466e..20e610b8f 100644 --- a/ir/kaps/matrix.c +++ b/ir/kaps/matrix.c @@ -35,13 +35,12 @@ pbqp_matrix_t *pbqp_matrix_alloc(pbqp_t *pbqp, unsigned rows, unsigned cols) { - assert(cols > 0); - assert(rows > 0); - unsigned length = rows * cols; - pbqp_matrix_t *mat = (pbqp_matrix_t*)obstack_alloc(&pbqp->obstack, sizeof(*mat) + sizeof(*mat->entries) * length); + assert(cols > 0); + assert(rows > 0); + mat->cols = cols; mat->rows = rows; memset(mat->entries, 0, sizeof(*mat->entries) * length); @@ -82,10 +81,11 @@ pbqp_matrix_t *pbqp_matrix_copy_and_transpose(pbqp_t *pbqp, pbqp_matrix_t *m) void pbqp_matrix_transpose(pbqp_t *pbqp, pbqp_matrix_t *mat) { unsigned len; + pbqp_matrix_t *tmp; len = mat->rows * mat->cols; - pbqp_matrix_t *tmp = pbqp_matrix_copy_and_transpose(pbqp, mat); + tmp = pbqp_matrix_copy_and_transpose(pbqp, mat); memcpy(mat, tmp, sizeof(*mat) + sizeof(*mat->entries) * len); @@ -148,16 +148,18 @@ num pbqp_matrix_get_col_min(pbqp_matrix_t *matrix, unsigned col_index, vector_t unsigned row_index; num min = INF_COSTS; - assert(matrix->rows == flags->len); - unsigned col_len = matrix->cols; unsigned row_len = matrix->rows; + assert(matrix->rows == flags->len); + for (row_index = 0; row_index < row_len; ++row_index) { + num elem; + /* Ignore virtual deleted columns. */ if (flags->entries[row_index].data == INF_COSTS) continue; - num elem = matrix->entries[row_index * col_len + col_index]; + elem = matrix->entries[row_index * col_len + col_index]; if (elem < min) { min = elem; @@ -173,16 +175,18 @@ unsigned pbqp_matrix_get_col_min_index(pbqp_matrix_t *matrix, unsigned col_index unsigned min_index = 0; num min = INF_COSTS; - assert(matrix->rows == flags->len); - unsigned col_len = matrix->cols; unsigned row_len = matrix->rows; + assert(matrix->rows == flags->len); + for (row_index = 0; row_index < row_len; ++row_index) { + num elem; + /* Ignore virtual deleted columns. */ if (flags->entries[row_index].data == INF_COSTS) continue; - num elem = matrix->entries[row_index * col_len + col_index]; + elem = matrix->entries[row_index * col_len + col_index]; if (elem < min) { min = elem; @@ -223,15 +227,17 @@ num pbqp_matrix_get_row_min(pbqp_matrix_t *matrix, unsigned row_index, vector_t unsigned col_index; num min = INF_COSTS; - assert(matrix->cols == flags->len); - unsigned len = flags->len; + assert(matrix->cols == len); + for (col_index = 0; col_index < len; ++col_index) { + num elem; + /* Ignore virtual deleted columns. */ if (flags->entries[col_index].data == INF_COSTS) continue; - num elem = matrix->entries[row_index * len + col_index]; + elem = matrix->entries[row_index * len + col_index]; if (elem < min) { min = elem; @@ -247,15 +253,17 @@ unsigned pbqp_matrix_get_row_min_index(pbqp_matrix_t *matrix, unsigned row_index unsigned min_index = 0; num min = INF_COSTS; - assert(matrix->cols == flags->len); - unsigned len = flags->len; + assert(matrix->cols == len); + for (col_index = 0; col_index < len; ++col_index) { + num elem; + /* Ignore virtual deleted columns. */ if (flags->entries[col_index].data == INF_COSTS) continue; - num elem = matrix->entries[row_index * len + col_index]; + elem = matrix->entries[row_index * len + col_index]; if (elem < min) { min = elem; diff --git a/ir/kaps/optimal.c b/ir/kaps/optimal.c index 3dfdd2f6e..94ccecc8a 100644 --- a/ir/kaps/optimal.c +++ b/ir/kaps/optimal.c @@ -1046,6 +1046,7 @@ void apply_RII(pbqp_t *pbqp) pbqp_matrix_t *tgt_mat; pbqp_node_t *src_node; pbqp_node_t *tgt_node; + pbqp_edge_t *edge; pbqp_matrix_t *mat; vector_t *vec; vector_t *node_vec; @@ -1138,7 +1139,7 @@ void apply_RII(pbqp_t *pbqp) } } - pbqp_edge_t *edge = get_edge(pbqp, src_node->index, tgt_node->index); + edge = get_edge(pbqp, src_node->index, tgt_node->index); /* Disconnect node. */ disconnect_edge(src_node, src_edge); diff --git a/ir/kaps/pbqp_edge.c b/ir/kaps/pbqp_edge.c index 1a9049743..da9ea5c61 100644 --- a/ir/kaps/pbqp_edge.c +++ b/ir/kaps/pbqp_edge.c @@ -42,6 +42,9 @@ pbqp_edge_t *alloc_edge(pbqp_t *pbqp, int src_index, int tgt_index, pbqp_matrix_t *costs) { int transpose = 0; + pbqp_edge_t *edge = OALLOC(&pbqp->obstack, pbqp_edge_t); + pbqp_node_t *src_node; + pbqp_node_t *tgt_node; if (tgt_index < src_index) { int tmp = src_index; @@ -51,11 +54,9 @@ pbqp_edge_t *alloc_edge(pbqp_t *pbqp, int src_index, int tgt_index, transpose = 1; } - pbqp_edge_t *edge = OALLOC(&pbqp->obstack, pbqp_edge_t); - - pbqp_node_t *src_node = get_node(pbqp, src_index); + src_node = get_node(pbqp, src_index); - pbqp_node_t *tgt_node = get_node(pbqp, tgt_index); + tgt_node = get_node(pbqp, tgt_index); if (transpose) { edge->costs = pbqp_matrix_copy_and_transpose(pbqp, costs); diff --git a/ir/kaps/vector.c b/ir/kaps/vector.c index 4970d080d..063265d83 100644 --- a/ir/kaps/vector.c +++ b/ir/kaps/vector.c @@ -34,9 +34,11 @@ num pbqp_add(num x, num y) { + num res; + if (x == INF_COSTS || y == INF_COSTS) return INF_COSTS; - num res = x + y; + res = x + y; #if !KAPS_USE_UNSIGNED /* No positive overflow. */ @@ -56,8 +58,8 @@ num pbqp_add(num x, num y) vector_t *vector_alloc(pbqp_t *pbqp, unsigned length) { - assert(length > 0); vector_t *vec = (vector_t*)obstack_alloc(&pbqp->obstack, sizeof(*vec) + sizeof(*vec->entries) * length); + assert(length > 0); vec->len = length; memset(vec->entries, 0, sizeof(*vec->entries) * length);