X-Git-Url: http://nsz.repo.hu/git/?a=blobdiff_plain;f=ir%2Fir%2Firgwalk.c;h=a972a02a857fe46edfbb845152a149247404309a;hb=8f355cb9b3d20c10f71d1b1e17cbf59a51ced83b;hp=cb3935c44f4d603bb0e19061a35b135f35605588;hpb=ccd322a9bf4c71ecd2c8666ee07d54e3236c9c71;p=libfirm diff --git a/ir/ir/irgwalk.c b/ir/ir/irgwalk.c index cb3935c44..a972a02a8 100644 --- a/ir/ir/irgwalk.c +++ b/ir/ir/irgwalk.c @@ -1,5 +1,5 @@ /* - * Copyright (C) 1995-2007 University of Karlsruhe. All right reserved. + * Copyright (C) 1995-2008 University of Karlsruhe. All right reserved. * * This file is part of libFirm. * @@ -251,6 +251,7 @@ void irg_walk(ir_node *node, irg_walk_func *pre, irg_walk_func *post, void *env) { assert(is_ir_node(node)); +#ifdef INTERPROCEDURAL_VIEW if (get_interprocedural_view()) { pset_new_t irg_set; pset_new_iterator_t iter; @@ -271,11 +272,14 @@ void irg_walk(ir_node *node, irg_walk_func *pre, irg_walk_func *post, void *env) irg_walk_cg(node, visited, &irg_set, pre, post, env); pset_new_destroy(&irg_set); } else { +#endif set_using_visited(current_ir_graph); inc_irg_visited(current_ir_graph); nodes_touched = irg_walk_2(node, pre, post, env); clear_using_visited(current_ir_graph); +#ifdef INTERPROCEDURAL_VIEW } +#endif return; } @@ -493,7 +497,7 @@ cg_walk_2(ir_node *node, irg_walk_func *pre, irg_walk_func *post, void * env) return; } - +#ifdef INTERPROCEDURAL_VIEW /* Walks all irgs in interprocedural view. Visits each node only once. */ void cg_walk(irg_walk_func *pre, irg_walk_func *post, void *env) { int i; @@ -552,6 +556,7 @@ void cg_walk(irg_walk_func *pre, irg_walk_func *post, void *env) { set_interprocedural_view(rem_view); current_ir_graph = rem; } +#endif /***************************************************************************/ @@ -653,15 +658,12 @@ void irg_block_walk_graph(ir_graph *irg, irg_walk_func *pre, * 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]; + inc_irg_visited(irg); + irg_walk_2(irg->anchor, pre, post, env); - irg_walk_2(anchor, pre, post, env); - } current_ir_graph = rem; } @@ -694,7 +696,7 @@ static void walk_entity(ir_entity *ent, void *env) /* Walks over all code in const_code_irg. */ void walk_const_code(irg_walk_func *pre, irg_walk_func *post, void *env) { - int i, j; + int i, j, n_types; walk_env my_env; ir_graph *rem = current_ir_graph; @@ -707,16 +709,18 @@ void walk_const_code(irg_walk_func *pre, irg_walk_func *post, void *env) { /* Walk all types that can contain constant entities. */ walk_types_entities(get_glob_type(), &walk_entity, &my_env); - for (i = 0; i < get_irp_n_types(); i++) + n_types = get_irp_n_types(); + for (i = 0; i < n_types; i++) walk_types_entities(get_irp_type(i), &walk_entity, &my_env); for (i = 0; i < get_irp_n_irgs(); i++) walk_types_entities(get_irg_frame_type(get_irp_irg(i)), &walk_entity, &my_env); /* Walk constant array bounds. */ - for (i = 0; i < get_irp_n_types(); i++) { + for (i = 0; i < n_types; i++) { ir_type *tp = get_irp_type(i); if (is_Array_type(tp)) { - for (j = 0; j < get_array_n_dimensions(tp); j++) { + int n_dim = get_array_n_dimensions(tp); + for (j = 0; j < n_dim; j++) { ir_node *n = get_array_lower_bound(tp, j); if (n) irg_walk(n, pre, post, env); n = get_array_upper_bound(tp, j);