- ir_node *pred_block;
-
- if (!irn_visited(pred)
- && (get_irn_pinned(pred) == op_pin_state_floats)) {
-
- /*
- * If the current node is NOT in a dead block, but one of its
- * predecessors is, we must move the predecessor to a live block.
- * Such thing can happen, if global CSE chose a node from a dead block.
- * We move it simply to our block.
- * Note that neither Phi nor End nodes are floating, so we don't
- * need to handle them here.
- */
- if (! in_dead_block) {
- if (get_irn_pinned(pred) == op_pin_state_floats &&
- is_Block_unreachable(get_nodes_block(pred)))
- set_nodes_block(pred, curr_block);
- }
- place_floats_early(pred, worklist);
- }
-
- /*
- * A node in the Bad block must stay in the bad block,
- * so don't compute a new block for it.
- */
- if (in_dead_block)
- continue;
-
- /* Because all loops contain at least one op_pin_state_pinned node, now all
- our inputs are either op_pin_state_pinned or place_early() has already
- been finished on them. We do not have any unfinished inputs! */
- pred_block = get_nodes_block(pred);
- if ((!is_Block_dead(pred_block)) &&
- (get_Block_dom_depth(pred_block) > depth)) {
- b = pred_block;
- depth = get_Block_dom_depth(pred_block);
- }
- /* Avoid that the node is placed in the Start block if we are not in the
- backend phase. */
- if (depth == 1 &&
- get_Block_dom_depth(get_nodes_block(n)) > 1 &&
- get_irg_phase_state(current_ir_graph) != phase_backend) {
- b = get_Block_cfg_out(get_irg_start_block(current_ir_graph), 0);
- assert(b != get_irg_start_block(current_ir_graph));
- depth = 2;
- }