end block can not be optimized away any more.
[libfirm] / ir / ir / irgwalk.c
index 24147d3..6290926 100644 (file)
@@ -8,6 +8,10 @@
 ** - execute the post function after recursion
 */
 
+#ifdef HAVE_CONFIG_H
+# include <config.h>
+#endif
+
 # include "irnode.h"
 # include "irgraph.h" /* visited flag */
 
@@ -19,19 +23,29 @@ void irg_walk_2(ir_node *node,
   int i;
 
   assert(node);
-  if(get_irn_visited(node) < get_irg_visited(current_ir_graph)) {
+/*      printf(" - "); DDMSG2(node);  */
+
+  if (get_irn_visited(node) < get_irg_visited(current_ir_graph)) {
+
+/*      printf(" -> "); DDMSG2(node);  */
     set_irn_visited(node, get_irg_visited(current_ir_graph));
-    if(pre) {
+
+    if (pre) {
       pre(node, env);
     }
 
-    if (is_no_Block(node))
+    if (is_no_Block(node)) {
       irg_walk_2(get_nodes_Block(node), pre, post, env);
-    for(i = get_irn_arity(node) - 1; i >= 0; --i) {
+    }
+    for (i = get_irn_arity(node) - 1; i >= 0; --i) {
+/*        printf("   "); DDMSG2(node); */
+/*        printf("   "); DDMSG2(get_irn_n(node, i)); */
+
       irg_walk_2(get_irn_n(node, i), pre, post, env);
     }
 
-    if(post)
+/*      printf(" <- "); DDMSG2(node);  */
+    if (post)
       post(node, env);
   }
   return;
@@ -42,28 +56,22 @@ void irg_walk(ir_node *node,
              void (pre)(ir_node*, void*), void (post)(ir_node*, void*),
              void *env)
 {
-  unsigned long i;
-
   assert(node);
-  i = get_irg_visited(current_ir_graph);
-  ++i;
-  set_irg_visited(current_ir_graph, i);
+  inc_irg_visited (current_ir_graph);
   irg_walk_2(node, pre, post, env);
   return;
 }
 
 /***************************************************************************/
-void irg_block_walk_2(ir_node *node,
-                     void (pre)(ir_node*, void*), void (post)(ir_node*, void*),
-                     void *env)
+void irg_block_walk_2(ir_node *node, void (pre)(ir_node*, void*),
+                     void (post)(ir_node*, void*), void *env)
 {
   int i;
 
   assert(get_irn_opcode(node) == iro_Block);
 
-
-  if(get_Block_block_visit(node) < get_irg_block_visited(current_ir_graph)) {
-    set_Block_block_visit(node, get_irg_block_visited(current_ir_graph));
+  if(get_Block_block_visited(node) < get_irg_block_visited(current_ir_graph)) {
+    set_Block_block_visited(node, get_irg_block_visited(current_ir_graph));
 
     if(pre)
       pre(node, env);
@@ -95,12 +103,8 @@ void irg_block_walk(ir_node *node,
                    void (pre)(ir_node*, void*), void (post)(ir_node*, void*),
                    void *env)
 {
-  unsigned long i;
-
   assert(node);
-  i = get_irg_block_visited(current_ir_graph);
-  ++i;
-  set_irg_block_visited(current_ir_graph, i);
+  inc_irg_block_visited(current_ir_graph);
   if (is_no_Block(node)) node = get_nodes_Block(node);
   assert(get_irn_opcode(node)  == iro_Block);
   irg_block_walk_2(node, pre, post, env);