- int i, n;
-
- /* Blocks cannot be scheduled. */
- if (is_Block(irn) || get_irn_n_edges(irn) == 0)
- return 0;
-
- /*
- * Check, if the given ir node is in a different block as the
- * currently scheduled one. If that is so, don't make the node ready.
- */
- if (env->block != get_nodes_block(irn))
- return 0;
-
- for (i = 0, n = get_irn_ins_or_deps(irn); i < n; ++i) {
- ir_node *op = get_irn_in_or_dep(irn, i);
-
- /* if irn is an End we have keep-alives and op might be a block, skip that */
- if (is_Block(op)) {
- assert(is_End(irn));
- continue;
- }
-
- /* If the operand is local to the scheduled block and not yet
- * scheduled, this nodes cannot be made ready, so exit. */
- if (! is_already_scheduled(env, op) && get_nodes_block(op) == env->block)
- return 0;
- }
-
- if (is_Proj(irn) || (arch_irn_get_flags(irn) & arch_irn_flags_not_scheduled)) {