- int i, is_phi;
- block_entry_t *entry;
- ir_node *block;
-
- mark_irn_visited(node);
-
- if (node->op == op_Block) {
- /* predecessors of a block are control flow nodes */
- for (i = get_irn_arity(node) - 1; i >= 0; --i) {
- ir_node *pred = get_irn_n(node, i);
- ir_node *blk = get_nodes_block(pred);
-
- if (irn_not_visited(pred)) {
- collect_walk(pred, env);
-
- /* control flow predecessors are always block inputs */
- entry = block_find_entry(blk, env);
- ARR_APP1(ir_node *, entry->entry_list, pred);
- }
- }
-
- /* it's a block, put it into the block list */
- if (node == get_irg_end_block(current_ir_graph)) {
- /* Put the end block always last. If we don't do it here,
- * it might be placed elsewhere if the graph contains
- * endless loops.
- */
- }
- else {
- ARR_APP1(ir_node *, env->blk_list, node);
- }
- }
- else {
- block = get_nodes_block(node);
-
- if (irn_not_visited(block))
- collect_walk(block, env);
-
- is_phi = is_Phi(node);
- for (i = get_irn_arity(node) - 1; i >= 0; --i) {
- ir_node *pred = get_irn_n(node, i);
-
- if (irn_not_visited(pred)) {
- collect_walk(pred, env);
-
- /* BEWARE: predecessors of End nodes might be blocks */
- if (is_no_Block(pred)) {
- ir_node *blk = get_nodes_block(pred);
-
- /*
- * Note that Phi predecessors are always block entries
- * because Phi edges are always "outside" a block
- */
- if (block != blk || is_phi) {
- entry = block_find_entry(blk, env);
- ARR_APP1(ir_node *, entry->entry_list, pred);
- }
- }
- }
- }
- }
+ int i, is_phi;
+ block_entry_t *entry;
+ ir_node *block;
+
+ mark_irn_visited(node);
+
+ if (is_Block(node)) {
+ /* predecessors of a block are control flow nodes */
+ for (i = _get_walk_arity(env, node) - 1; i >= 0; --i) {
+ ir_node *pred = _get_walk_irn_n(env, node, i);
+ ir_node *blk = get_nodes_block(pred);
+
+ if (!irn_visited(pred)) {
+ collect_walk(pred, env);
+
+ /* control flow predecessors are always block inputs */
+ entry = block_find_entry(blk, env);
+ ARR_APP1(ir_node *, entry->entry_list, pred);
+ }
+ }
+
+ /* it's a block, put it into the block list */
+ if (node == get_irg_end_block(current_ir_graph)) {
+ /* Put the end block always last. If we don't do it here,
+ * it might be placed elsewhere if the graph contains
+ * endless loops.
+ */
+ } else {
+ ARR_APP1(ir_node *, env->blk_list, node);
+ }
+ }
+ else {
+ block = get_nodes_block(node);
+
+ if (!irn_visited(block))
+ collect_walk(block, env);
+
+ is_phi = is_Phi(node);
+ for (i = _get_walk_arity(env, node) - 1; i >= 0; --i) {
+ ir_node *pred = _get_walk_irn_n(env, node, i);
+
+ if (!irn_visited(pred)) {
+ collect_walk(pred, env);
+
+ /* BEWARE: predecessors of End nodes might be blocks */
+ if (!is_Block(pred)) {
+ ir_node *blk = get_nodes_block(pred);
+
+ /*
+ * Note that Phi predecessors are always block entries
+ * because Phi edges are always "outside" a block
+ */
+ if (block != blk || is_phi) {
+ entry = block_find_entry(blk, env);
+ ARR_APP1(ir_node *, entry->entry_list, pred);
+ }
+ }
+ }
+ }
+ }