From 12203fc84a7620ce57d6cfdf2d56eb6b0a3ce076 Mon Sep 17 00:00:00 2001 From: Matthias Braun Date: Fri, 11 Feb 2011 13:52:47 +0000 Subject: [PATCH] comparing timesteps in different blocks is pointless and here more conservative than necessary [r28367] --- ir/be/beflags.c | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/ir/be/beflags.c b/ir/be/beflags.c index 1816b5023..1a08275b0 100644 --- a/ir/be/beflags.c +++ b/ir/be/beflags.c @@ -87,7 +87,8 @@ static bool default_check_modifies(const ir_node *node) static bool can_move(ir_node *node, ir_node *after) { const ir_edge_t *edge; - assert(get_nodes_block(node) == get_nodes_block(after)); + ir_node *node_block = get_nodes_block(node); + assert(node_block == get_nodes_block(after)); /* TODO respect dep edges */ assert(get_irn_n_edges_kind(node, EDGE_KIND_DEP) == 0); @@ -100,6 +101,8 @@ static bool can_move(ir_node *node, ir_node *after) assert(get_irn_n_edges_kind(out, EDGE_KIND_DEP) == 0); foreach_out_edge(out, edge2) { ir_node *out2 = get_edge_src_irn(edge2); + if (get_nodes_block(out2) != node_block) + continue; /* Phi or End represents a usage at block end. */ if (is_Phi(out2) || is_End(out2)) continue; @@ -120,6 +123,8 @@ static bool can_move(ir_node *node, ir_node *after) } } } else { + if (get_nodes_block(out) != node_block) + continue; /* phi represents a usage at block end */ if (is_Phi(out)) continue; -- 2.20.1