nn = get_new_node(n);
if (is_Block(n)) {
+ /* copy the macro block header */
+ ir_node *mbh = get_Block_MacroBlock(n);
+
+ if (! is_Bad(mbh))
+ set_irn_n(nn, -1, get_new_node(mbh));
+
/* Don't copy Bad nodes. */
j = 0;
irn_arity = get_irn_arity(n);
for (i = 0; i < irn_arity; i++) {
if (! is_Bad(get_irn_n(n, i))) {
- set_irn_n (nn, j, get_new_node(get_irn_n(n, i)));
+ set_irn_n(nn, j, get_new_node(get_irn_n(n, i)));
/*if (is_backedge(n, i)) set_backedge(nn, j);*/
j++;
}
exchange(nn, old);
}
}
- } else if (get_irn_op(n) == op_Phi) {
+ } else if (is_Phi(n)) {
/* Don't copy node if corresponding predecessor in block is Bad.
The Block itself should not be Bad. */
block = get_nodes_block(n);
assert(irn_not_visited(n));
mark_irn_visited(n);
-#ifndef CAN_PLACE_PROJS
- while (is_Proj(n)) {
- n = get_Proj_pred(n);
- mark_irn_visited(n);
- }
-#endif
-
/* Place floating nodes. */
if (get_irn_pinned(n) == op_pin_state_floats) {
ir_node *curr_block = get_irn_n(n, -1);
return dca;
}
-#ifdef CAN_PLACE_PROJS
static void set_projs_block(ir_node *node, ir_node *block)
{
int i;
set_nodes_block(succ, block);
}
}
-#endif
/**
* Find the latest legal block for N and place N into the
if (dca != NULL) {
set_nodes_block(n, dca);
move_out_of_loops(n, early_blk);
-#ifdef CAN_PLACE_PROJS
if(get_irn_mode(n) == mode_T) {
set_projs_block(n, get_nodes_block(n));
}
-#endif
}
}
}