backend: put ignore regs into beirg
[libfirm] / ir / ir / irgwalk.c
index a4e290c..109f8ef 100644 (file)
@@ -160,11 +160,15 @@ void irg_walk_core(ir_node *node, irg_walk_func *pre, irg_walk_func *post,
 void irg_walk(ir_node *node, irg_walk_func *pre, irg_walk_func *post,
               void *env)
 {
-       ir_reserve_resources(current_ir_graph, IR_RESOURCE_IRN_VISITED);
-       inc_irg_visited(current_ir_graph);
-       assert(current_ir_graph == get_irn_irg(node));
+       ir_graph *irg = get_irn_irg(node);
+       ir_graph *rem = current_ir_graph;
+
+       current_ir_graph = irg;
+       ir_reserve_resources(irg, IR_RESOURCE_IRN_VISITED);
+       inc_irg_visited(irg);
        irg_walk_core(node, pre, post, env);
-       ir_free_resources(current_ir_graph, IR_RESOURCE_IRN_VISITED);
+       ir_free_resources(irg, IR_RESOURCE_IRN_VISITED);
+       current_ir_graph = rem;
 }
 
 /*