X-Git-Url: http://nsz.repo.hu/git/?a=blobdiff_plain;f=ir%2Fir%2Firgwalk.c;h=35abd5b48fc4facd1b4d354219141dc038db3ccd;hb=b78bdd4d94de46de4156272e6dbfe44e97933a5b;hp=c4016f9292897e3bb5f6babac49e18968db69532;hpb=d382d46d40faa79f071cf3eebd74fc47ad22b196;p=libfirm diff --git a/ir/ir/irgwalk.c b/ir/ir/irgwalk.c index c4016f929..35abd5b48 100644 --- a/ir/ir/irgwalk.c +++ b/ir/ir/irgwalk.c @@ -116,7 +116,7 @@ static void irg_walk_cg(ir_node * node, unsigned long visited, eset * irg_set, * Insert all ir_graphs in irg_set, that are (transitive) reachable. */ static void collect_irgs(ir_node * node, eset * irg_set) { - if (get_irn_op(node) == op_Call) { + if (is_Call(node)) { int i; for (i = get_Call_n_callees(node) - 1; i >= 0; --i) { entity * ent = get_Call_callee(node, i); @@ -238,7 +238,7 @@ static unsigned nodes_touched = 0; */ void irg_walk(ir_node *node, irg_walk_func *pre, irg_walk_func *post, void *env) { - assert(node && node->kind==k_ir_node); + assert(is_ir_node(node)); if (get_interprocedural_view()) { eset * irg_set = eset_create(); @@ -501,6 +501,22 @@ void irg_block_walk_graph(ir_graph *irg, irg_walk_func *pre, current_ir_graph = rem; } +/* + * Additionally walk over all anchors. Do NOT increase the visit flag. + */ +void irg_walk_anchors(ir_graph *irg, irg_walk_func *pre, irg_walk_func *post, void *env) { + int i; + ir_graph * rem = current_ir_graph; + current_ir_graph = irg; + + for (i = 0; i < anchor_max; ++i) { + ir_node *anchor = irg->anchors[i]; + + irg_walk_2(anchor, pre, post, env); + } + current_ir_graph = rem; +} + /********************************************************************/ typedef struct walk_env { @@ -551,7 +567,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); + ir_type *tp = get_irp_type(i); if (is_Array_type(tp)) { for (j = 0; j < get_array_n_dimensions(tp); j++) { ir_node *n = get_array_lower_bound(tp, j);