-unsigned be_get_next_use(be_uses_t *uses, const ir_node *from,
- unsigned from_step, const ir_node *def,
- int skip_from_uses)
+static int be_is_phi_argument(const be_lv_t *lv, const ir_node *block, const ir_node *def)
+{
+ ir_node *node;
+ ir_node *succ_block = NULL;
+ const ir_edge_t *edge;
+ int arity, i;
+
+#if 0
+ if(get_irn_n_edges_kind(block, EDGE_KIND_BLOCK) > 1)
+ return 0;
+#endif
+
+ foreach_block_succ(block, edge) {
+ succ_block = get_edge_src_irn(edge);
+ break;
+ }
+
+ 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 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)