#include "beflags.h"
#include "bearch.h"
#include "beirg.h"
+#include "beirgmod.h"
#include "besched.h"
#include "benode.h"
#include "belive.h"
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);
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;
}
}
} else {
+ if (get_nodes_block(out) != node_block)
+ continue;
/* phi represents a usage at block end */
if (is_Phi(out))
continue;