+ ir_node *node;
+ ir_node *succ_block = NULL;
+ int arity, i;
+
+#if 1
+ if (get_irn_n_edges_kind(block, EDGE_KIND_BLOCK) < 1)
+#else
+ if (get_irn_n_edges_kind(block, EDGE_KIND_BLOCK) != 1)
+#endif
+ return 0;
+
+ succ_block = get_first_block_succ(block);
+
+ arity = get_Block_n_cfgpreds(succ_block);
+ if (arity <= 1)
+ return 0;
+
+ for (i = 0; i < arity; ++i) {
+ if (get_Block_cfgpred_block(succ_block, i) == block)
+ break;
+ }
+ assert(i < arity);
+
+ sched_foreach(succ_block, node) {
+ ir_node *arg;
+
+ if (!is_Phi(node))
+ break;
+
+ arg = get_irn_n(node, i);
+ if (arg == def)
+ return 1;
+ }
+
+ return 0;
+}
+
+static inline unsigned get_step(const ir_node *node)
+{
+ return PTR_TO_INT(get_irn_link(node));
+}
+
+static be_next_use_t get_next_use(be_uses_t *env, ir_node *from,
+ unsigned from_step, const ir_node *def,
+ int skip_from_uses)
+{
+ unsigned step = from_step;
+ ir_node *block = get_nodes_block(from);
+ ir_node *next_use;
+ ir_node *node;
+ unsigned timestep;
+ unsigned next_use_step;