X-Git-Url: http://nsz.repo.hu/git/?a=blobdiff_plain;f=ir%2Fana%2Frta.c;h=ea0ae3fb6c0e2eb22edbb0a1a0d1a131462cf958;hb=6f068af98daa4725d60e5d23a8f98ec2841cfa44;hp=f87a10962c4304830d92b13dac5a8c9e4e922fa0;hpb=5f9013339e1d6492a0960bd6a4c470eb29351c7e;p=libfirm diff --git a/ir/ana/rta.c b/ir/ana/rta.c index f87a10962..ea0ae3fb6 100644 --- a/ir/ana/rta.c +++ b/ir/ana/rta.c @@ -1,5 +1,5 @@ /* - * Copyright (C) 1995-2008 University of Karlsruhe. All right reserved. + * Copyright (C) 1995-2011 University of Karlsruhe. All right reserved. * * This file is part of libFirm. * @@ -97,8 +97,8 @@ static bool add_class(ir_type *clazz) */ static bool add_implementing_graphs(ir_entity *method) { - int i; - int n_over = get_entity_n_overwrittenby(method); + size_t i; + size_t n_over = get_entity_n_overwrittenby(method); ir_graph *graph = get_entity_irg(method); bool change = false; @@ -129,7 +129,7 @@ static bool add_implementing_graphs(ir_entity *method) static void rta_act(ir_node *node, void *env) { bool *change = (bool*)env; - ir_opcode op = get_irn_opcode(node); + unsigned op = get_irn_opcode(node); if (iro_Call == op) { /* CALL */ ir_entity *ent = NULL; @@ -185,7 +185,7 @@ static bool rta_fill_graph(ir_graph* graph) */ static int rta_fill_incremental(void) { - int i; + size_t i, n; int n_runs = 0; bool rerun = true; @@ -193,15 +193,13 @@ static int rta_fill_incremental(void) /* Need to take care of graphs that are externally visible or sticky. Pretend that they are called: */ - for (i = get_irp_n_irgs() - 1; i >= 0; --i) { + for (i = 0, n = get_irp_n_irgs(); i < n; ++i) { ir_graph *graph = get_irp_irg(i); ir_entity *ent = get_irg_entity(graph); ir_linkage linkage = get_entity_linkage(ent); - if (entity_is_externally_visible(ent) - || (linkage & IR_LINKAGE_HIDDEN_USER)) { + if ((linkage & IR_LINKAGE_HIDDEN_USER) || entity_is_externally_visible(ent)) pset_new_insert(_live_graphs, graph); - } } while (rerun) { @@ -216,12 +214,12 @@ static int rta_fill_incremental(void) DB((dbg, LEVEL_2, "RTA: RUN %i\n", n_runs)); /* collect what we have found previously */ - foreach_pset_new(live_graphs, graph, iter) { + foreach_pset_new(live_graphs, ir_graph*, graph, iter) { pset_new_insert(_live_graphs, graph); } rerun = false; - foreach_pset_new(live_graphs, graph, iter) { + foreach_pset_new(live_graphs, ir_graph*, graph, iter) { DB((dbg, LEVEL_2, "RTA: RUN %i: considering graph of %+F\n", n_runs, graph)); rerun |= rta_fill_graph(graph); } @@ -237,12 +235,12 @@ static int rta_fill_incremental(void) /** * Count the number of graphs that we have found to be live. */ -static int stats(void) +static size_t stats(void) { - int i; - int n_live_graphs = 0; + size_t i, n; + size_t n_live_graphs = 0; - for (i = get_irp_n_irgs() - 1; i >= 0; --i) { + for (i = 0, n = get_irp_n_irgs(); i < n; ++i) { ir_graph *graph = get_irp_irg(i); if (rta_is_alive_graph(graph)) @@ -265,9 +263,8 @@ static int stats(void) */ static void init_tables(void) { - ir_type *tp; - int i, n; - ir_graph *irg; + ir_graph *irg; + ir_segment_t segment; _live_classes = XMALLOC(pset_new_t); pset_new_init(_live_classes); @@ -280,24 +277,18 @@ static void init_tables(void) pset_new_insert(_live_graphs, irg); } - /* Find static allocated classes */ - tp = get_glob_type(); - n = get_class_n_members(tp); - for (i = 0; i < n; ++i) { - ir_type *member_type = get_entity_type(get_class_member(tp, i)); - if (is_Class_type(member_type)) - pset_new_insert(_live_classes, member_type); - } + /* Find static allocated classes in all segments */ + for (segment = IR_SEGMENT_FIRST; segment <= IR_SEGMENT_LAST; ++segment) { + ir_type *tp = get_segment_type(segment); + size_t n = get_compound_n_members(tp); + size_t i; - tp = get_tls_type(); - n = get_struct_n_members(tp); - for (i = 0; i < n; ++i) { - ir_type *member_type = get_entity_type(get_struct_member(tp, i)); - if (is_Class_type(member_type)) - pset_new_insert(_live_classes, member_type); + for (i = 0; i < n; ++i) { + ir_type *member_type = get_entity_type(get_compound_member(tp, i)); + if (is_Class_type(member_type)) + pset_new_insert(_live_classes, member_type); + } } - - /** @FIXME: add constructors/destructors */ } /* @@ -311,9 +302,9 @@ void rta_init(void) # ifdef DEBUG_libfirm { - int i; - for (i = get_irp_n_irgs() - 1; i >= 0; --i) { - irg_verify(get_irp_irg(i), 0); + size_t i; + for (i = get_irp_n_irgs(); i > 0;) { + irg_verify(get_irp_irg(--i), 0); } tr_verify(); } @@ -323,16 +314,16 @@ void rta_init(void) n_runs = rta_fill_incremental(); - DB((dbg, LEVEL_1, "RTA: n_graphs = %i\n", get_irp_n_irgs())); - DB((dbg, LEVEL_1, "RTA: n_live_graphs = %i\n", stats())); + DB((dbg, LEVEL_1, "RTA: n_graphs = %zu\n", get_irp_n_irgs())); + DB((dbg, LEVEL_1, "RTA: n_live_graphs = %zu\n", stats())); DB((dbg, LEVEL_1, "RTA: n_runs = %i\n", n_runs)); # ifdef DEBUG_libfirm { - int i; + size_t i; - for (i = get_irp_n_irgs() - 1; i >= 0; --i) { - irg_verify(get_irp_irg(i), 0); + for (i = get_irp_n_irgs(); i > 0;) { + irg_verify(get_irp_irg(--i), 0); } tr_verify(); } @@ -367,15 +358,15 @@ static void make_entity_to_description(type_or_ent tore, void *env) */ void rta_delete_dead_graphs(void) { - int i, n_dead_irgs, n_graphs = get_irp_n_irgs(); + size_t i, n_dead_irgs, n_graphs = get_irp_n_irgs(); ir_graph *irg, *next_irg, *dead_irgs; irp_reserve_resources(irp, IR_RESOURCE_IRG_LINK); n_dead_irgs = 0; dead_irgs = NULL; - for (i = n_graphs - 1; i >= 0; --i) { - irg = get_irp_irg(i); + for (i = n_graphs; i > 0;) { + irg = get_irp_irg(--i); if (! rta_is_alive_graph(irg)) { set_irg_link(irg, dead_irgs); @@ -387,11 +378,11 @@ void rta_delete_dead_graphs(void) /* Hmm, probably we need to run this only if dead_irgs is non-NULL */ type_walk(make_entity_to_description, NULL, NULL); for (irg = dead_irgs; irg != NULL; irg = next_irg) { - next_irg = get_irg_link(irg); + next_irg = (ir_graph*) get_irg_link(irg); remove_irp_irg(irg); } - DB((dbg, LEVEL_1, "RTA: dead methods = %i\n", n_dead_irgs)); + DB((dbg, LEVEL_1, "RTA: dead methods = %zu\n", n_dead_irgs)); irp_free_resources(irp, IR_RESOURCE_IRG_LINK); } @@ -400,9 +391,9 @@ void rta_delete_dead_graphs(void) void rta_cleanup(void) { # ifdef DEBUG_libfirm - int i; - for (i = get_irp_n_irgs() - 1; i >= 0; --i) { - irg_verify(get_irp_irg(i), 0); + size_t i; + for (i = get_irp_n_irgs(); i > 0;) { + irg_verify(get_irp_irg(--i), 0); } tr_verify(); # endif /* defined DEBUG_libfirm */ @@ -435,7 +426,7 @@ int rta_is_alive_graph(ir_graph *graph) /* dump our opinion */ void rta_report(void) { - int i, n; + size_t i, n; n = get_irp_n_types(); for (i = 0; i < n; ++i) {