X-Git-Url: http://nsz.repo.hu/git/?a=blobdiff_plain;f=ir%2Fir%2Firgwalk.c;h=3c5ddac35f2872c96468f498e462e7b7f930ad13;hb=a226465c4f00c94b3e94a7c717e04061625e7a33;hp=c5e94a892fa77a8799bea3e4303b0eaa63faa93d;hpb=68938268cbfae9ff53b7ae340008593d34f89a73;p=libfirm diff --git a/ir/ir/irgwalk.c b/ir/ir/irgwalk.c index c5e94a892..3c5ddac35 100644 --- a/ir/ir/irgwalk.c +++ b/ir/ir/irgwalk.c @@ -28,6 +28,8 @@ # include "irprog.h" # include "irgwalk.h" # include "typewalk.h" +# include "firmstat.h" +# include "ircgcons.h" # include "eset.h" # include "array.h" @@ -150,10 +152,13 @@ irg_walk_2(ir_node *node, irg_walk_func *pre, irg_walk_func *post, void * env) void irg_walk(ir_node *node, irg_walk_func *pre, irg_walk_func *post, void *env) { assert(node && node->kind==k_ir_node); + if (interprocedural_view) { eset * irg_set = eset_create(); int visited; ir_graph * irg; + assert(get_irp_ip_view_state() == ip_view_valid); + interprocedural_view = false; eset_insert(irg_set, current_ir_graph); irg_walk(node, (irg_walk_func *) collect_irgs, NULL, irg_set); @@ -174,6 +179,8 @@ 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); current_ir_graph = irg; irg_walk(get_irg_end(irg), pre, post, env); current_ir_graph = rem; @@ -325,7 +332,6 @@ static ir_node *get_cf_op(ir_node *n) { static void irg_block_walk_2(ir_node *node, irg_walk_func *pre, irg_walk_func *post, void *env) { int i; - assert(get_irn_opcode(node) == iro_Block); 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)); @@ -358,6 +364,8 @@ 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); + assert(node); assert(!interprocedural_view); /* interprocedural_view not implemented, because it * interleaves with irg_walk */