local_optimize() now kills unrteachable code if dominance info is available.
[libfirm] / ir / ir / irgwalk.c
index 2df2c18..f879313 100644 (file)
@@ -32,7 +32,7 @@
 #include "irprog.h"
 #include "irgwalk.h"
 #include "typewalk.h"
-#include "firmstat.h"
+#include "irhooks.h"
 #include "ircgcons.h"
 
 #include "eset.h"
@@ -42,7 +42,7 @@
  * Walk over an interprocedural graph (callgraph).
  * Visits only graphs in irg_set.
  */
-static void irg_walk_cg(ir_node * node, int visited, eset * irg_set,
+static void irg_walk_cg(ir_node * node, unsigned long visited, eset * irg_set,
                         irg_walk_func *pre, irg_walk_func *post, void * env) {
   int i;
   ir_graph * rem = current_ir_graph;
@@ -219,7 +219,7 @@ void irg_walk(ir_node *node, irg_walk_func *pre, irg_walk_func *post, void *env)
 
   if (get_interprocedural_view()) {
     eset * irg_set = eset_create();
-    int visited;
+    unsigned long visited;
     ir_graph * irg;
     assert(get_irp_ip_view_state() == ip_view_valid);
 
@@ -246,7 +246,7 @@ void irg_walk(ir_node *node, irg_walk_func *pre, irg_walk_func *post, void *env)
 void irg_walk_graph(ir_graph *irg, irg_walk_func *pre, irg_walk_func *post, void *env) {
   ir_graph * rem = current_ir_graph;
 
-  stat_irg_walk(irg, (void *)pre, (void *)post);
+  hook_irg_walk(irg, (generic_func *)pre, (generic_func *)post);
   current_ir_graph = irg;
   irg_walk(get_irg_end(irg), pre, post, env);
   current_ir_graph = rem;
@@ -399,8 +399,8 @@ static void irg_block_walk_2(ir_node *node, irg_walk_func *pre, irg_walk_func *p
 {
   int i;
 
-  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 (Block_not_block_visited(node)) {
+    mark_Block_block_visited(node);
 
     if(pre) pre(node, env);
 
@@ -430,7 +430,7 @@ void irg_block_walk(ir_node *node, irg_walk_func *pre, irg_walk_func *post, void
   ir_node *block, *pred;
   int i;
 
-  stat_irg_block_walk(current_ir_graph, node, (void *)pre, (void *)post);
+  hook_irg_block_walk(current_ir_graph, node, (generic_func *)pre, (generic_func *)post);
 
   assert(node);
   assert(!get_interprocedural_view());   /* interprocedural_view not implemented, because it
@@ -453,9 +453,9 @@ void irg_block_walk(ir_node *node, irg_walk_func *pre, irg_walk_func *post, void
     for (i = 0; i < arity; i++) {
       pred = get_irn_n(node, i);
       if (get_irn_op(pred) == op_Phi) {
-       ir_node *block = get_nodes_block(pred);
+        ir_node *block = get_nodes_block(pred);
 
-       if (! is_Bad(block))
+        if (! is_Bad(block))
           irg_block_walk_2(block, pre, post, env);
       }
     }
@@ -526,7 +526,7 @@ void walk_const_code(irg_walk_func *pre, irg_walk_func *post, void *env) {
   /* Walk constant array bounds. */
   for (i = 0; i < get_irp_n_types(); i++) {
     type *tp = get_irp_type(i);
-    if (is_array_type(tp)) {
+    if (is_Array_type(tp)) {
       for (j = 0; j < get_array_n_dimensions(tp); j++) {
         ir_node *n = get_array_lower_bound(tp, j);
         if (n) irg_walk(n, pre, post, env);