-/* Walks through all nodes of cur_loop */
-static unsigned loop_walker_rec(ir_node *node,
- irg_walk_func_abortable *pre,
- irg_walk_func_abortable *post, void * env)
-{
- int i;
- unsigned stop = 0;
- ir_graph *irg = get_current_ir_graph();
-
- /* RETURN if we walked out of the loop*/
- if (!is_in_loop(node))
- return 0;
-
- if (pre) {
- unsigned stop = pre(node, env);
- if (stop)
- return stop;
- }
-
- set_irn_visited(node, get_irg_visited(irg));
-
- if (get_irn_op(node) != op_Block) {
- ir_node *pred = get_irn_n(node, -1);
- if (get_irn_visited(pred) < get_irg_visited(irg))
- {
- stop = loop_walker_rec(pred, pre, post, env);
- if (stop)
- return stop;
- }
- }
-
- for (i = get_irn_arity(node) - 1; i >= 0; --i) {
- ir_node *pred = get_irn_n(node, i);
- if (get_irn_visited(pred) < get_irg_visited(irg)) {
- stop = loop_walker_rec(pred, pre, post, env);
- if (stop)
- return stop;
- }
- }
-
- if (post)
- return post(node, env);
- return 0;
-}
-
-/**
- * Walks through loop nodes.
- * The entries of the loop (all edges pointing into the loop) have to be given.
- */
-static unsigned loop_walker(out_edges *entries,
- irg_walk_func_abortable *pre, irg_walk_func_abortable *post, void * env)
-{
- int i;
- int stop = 0;
-
- for (i=0; !stop && i<ARR_LEN(entries); i++) {
- ir_node *pred;
- out_edges entry;
- entry = entries[i];
-
- pred = get_irn_n( entry.node , entry.pred_irn_n);
-
- stop = loop_walker_rec( pred, pre, post, env);
- }
- return stop;
-}
-
-