Do not mark the transformed as visited. It makes no sense at all.
[libfirm] / ir / be / bessaconstr.c
index 38b486e..98554ac 100644 (file)
@@ -50,6 +50,9 @@
 #include "config.h"
 #endif
 
+/* statev in this file is extensive, so only enable if needed */
+#define DISABLE_STATEV
+
 #include "bessaconstr.h"
 #include "bemodule.h"
 #include "besched_t.h"
@@ -219,7 +222,7 @@ ir_node *search_def(be_ssa_construction_env_t *env, ir_node *at)
 static
 void introduce_def_at_block(ir_node *block, ir_node *def)
 {
-       if(irn_visited(block)) {
+       if (irn_visited_else_mark(block)) {
                ir_node *node = block;
                ir_node *current_def;
 
@@ -241,7 +244,6 @@ void introduce_def_at_block(ir_node *block, ir_node *def)
        } else {
                set_irn_link(block, def);
                set_irn_link(def, NULL);
-               mark_irn_visited(block);
        }
 }
 
@@ -347,9 +349,9 @@ ir_node **be_ssa_construction_get_new_phis(be_ssa_construction_env_t *env)
 void be_ssa_construction_fix_users_array(be_ssa_construction_env_t *env,
                                          ir_node **nodes, size_t nodes_len)
 {
-       stat_ev_cnt_decl(uses);
        const ir_edge_t *edge, *next;
        size_t i;
+       stat_ev_cnt_decl(uses);
 
        BE_TIMER_PUSH(t_ssa_constr);