+/**
+ * Set the scheduled index (the "step") of this node in its
+ * block.
+ *
+ * @param node the node
+ * @param step the scheduled index of the node
+ */
+static inline void set_step(ir_node *node, unsigned step)
+{
+ set_irn_link(node, INT_TO_PTR(step));
+}
+
+/**
+ * Find the next use of a value defined by def, starting at node from.
+ *
+ * @param env the uses environment
+ * @param from the node at which we should start the search
+ * @param def the definition of the value
+ * @param skip_from_uses if non-zero, ignore from uses
+ */
+static be_next_use_t get_next_use(be_uses_t *env, ir_node *from,
+ const ir_node *def, int skip_from_uses)
+{
+ unsigned step;
+ ir_node *block = get_nodes_block(from);
+ ir_node *next_use_node;
+ ir_node *node;
+ unsigned timestep;
+ unsigned next_use_step;
+
+ assert(skip_from_uses == 0 || skip_from_uses == 1);
+ if (skip_from_uses) {