X-Git-Url: http://nsz.repo.hu/git/?a=blobdiff_plain;f=ir%2Fbe%2Fbeflags.c;h=3ffae62d26c5880e63b3541bc604d1f12068a2c9;hb=5c6fc6b9c9d953da7efd735f66ce95a93230e7cd;hp=52027ecc4e193ecb24b47380621c8a8cd15991f3;hpb=f8cc15664f571aa7ef89d6f6bc8d5bd2b8ca7d53;p=libfirm diff --git a/ir/be/beflags.c b/ir/be/beflags.c index 52027ecc4..3ffae62d2 100644 --- a/ir/be/beflags.c +++ b/ir/be/beflags.c @@ -87,7 +87,6 @@ static bool default_check_modifies(const ir_node *node) */ static bool can_move(ir_node *node, ir_node *after) { - const ir_edge_t *edge; ir_node *node_block = get_nodes_block(node); assert(node_block == get_nodes_block(after)); @@ -98,7 +97,6 @@ static bool can_move(ir_node *node, ir_node *after) foreach_out_edge(node, edge) { ir_node *out = get_edge_src_irn(edge); if (is_Proj(out)) { - const ir_edge_t *edge2; assert(get_irn_n_edges_kind(out, EDGE_KIND_DEP) == 0); foreach_out_edge(out, edge2) { ir_node *out2 = get_edge_src_irn(edge2); @@ -108,7 +106,6 @@ static bool can_move(ir_node *node, ir_node *after) if (is_Phi(out2) || is_End(out2)) continue; if (is_Sync(out2)) { - const ir_edge_t *edge3; foreach_out_edge(out2, edge3) { ir_node *out3 = get_edge_src_irn(edge3); /* Phi or End represents a usage at block end. */ @@ -206,19 +203,21 @@ static void rematerialize_or_move(ir_node *flags_needed, ir_node *node, */ static void fix_flags_walker(ir_node *block, void *env) { - ir_node *node; ir_node *flags_needed = NULL; ir_node *flag_consumers = NULL; int pn = -1; (void) env; + ir_node *place = block; sched_foreach_reverse(block, node) { int i, arity; ir_node *new_flags_needed = NULL; ir_node *test; - if (is_Phi(node)) + if (is_Phi(node)) { + place = node; break; + } if (node == flags_needed) { /* all ok */ @@ -281,7 +280,7 @@ static void fix_flags_walker(ir_node *block, void *env) if (flags_needed != NULL) { assert(get_nodes_block(flags_needed) != block); - rematerialize_or_move(flags_needed, node, flag_consumers, pn); + rematerialize_or_move(flags_needed, place, flag_consumers, pn); flags_needed = NULL; flag_consumers = NULL; }