X-Git-Url: http://nsz.repo.hu/git/?a=blobdiff_plain;f=ir%2Fana%2Frta.c;h=bcee4f3b0e58e2058f35b1141767c82f3ce54b69;hb=c28b0f0f320bb045a53900576d9926916b22176f;hp=fc1673e20e326cbc7f1a8c3dfdcde284775dc78e;hpb=d89eda038e37b904cdc6b4ccec5232d3b3c5a325;p=libfirm diff --git a/ir/ana/rta.c b/ir/ana/rta.c index fc1673e20..bcee4f3b0 100644 --- a/ir/ana/rta.c +++ b/ir/ana/rta.c @@ -7,7 +7,7 @@ * Author: Florian * Modified by: * Created: 09.06.2002 - * CVS-ID: $$ + * CVS-ID: $Id$ * Copyright: (c) 1999-2004 Universität Karlsruhe * Licence: This file is protected by GPL - GNU GENERAL PUBLIC LICENSE. */ @@ -43,8 +43,10 @@ #include "irvrfy.h" #include "trvrfy.h" -# define TRUE 1 -# define FALSE 0 +# ifndef TRUE +# define TRUE 1 +# define FALSE 0 +# endif /* not defined TRUE */ /* flags */ static int verbose = 0; @@ -78,7 +80,7 @@ static ir_graph *get_implementing_graph (entity *method) /* GL this is not valid in our remove irg algorithm ... which we removed by now ... */ assert(get_entity_peculiarity(method) == peculiarity_description - || graph == get_entity_irg(get_SymConst_entity(get_atomic_ent_value(method)))); + || graph == get_entity_irg(get_SymConst_entity(get_atomic_ent_value(method)))); /* we *must* always return a graph != NULL, *except* when we're used inside remove_irg or force_description */ @@ -184,21 +186,21 @@ static void rta_act (ir_node *node, void *env) /* CALL SYMCONST */ } else if (iro_SymConst == get_irn_opcode (ptr)) { if (get_SymConst_kind(ptr) == symconst_addr_ent) { - ent = get_SymConst_entity (ptr); - ir_graph *graph = get_entity_irg (ent); - if (graph) { - *change |= add_graph (graph); - } else { - /* it's an external allocated thing. */ - } + ent = get_SymConst_entity (ptr); + ir_graph *graph = get_entity_irg (ent); + if (graph) { + *change |= add_graph (graph); + } else { + /* it's an external allocated thing. */ + } } else if (get_SymConst_kind(ptr) == symconst_addr_name) { - /* If this SymConst refers to a method the method is external_visible - and therefore must be considered live anyways. */ - if (get_SymConst_name(ptr) != new_id_from_str("iro_Catch")) - assert (ent && "couldn't determine entity of call to symConst"); + /* If this SymConst refers to a method the method is external_visible + and therefore must be considered live anyways. */ + if (get_SymConst_name(ptr) != new_id_from_str("iro_Catch")) + assert (ent && "couldn't determine entity of call to symConst"); } else { - /* other symconst. */ - assert(0 && "This SymConst can not be an address for a method call."); + /* other symconst. */ + assert(0 && "This SymConst can not be an address for a method call."); } /* STRANGE */ @@ -360,8 +362,7 @@ static void init_tables (void) int i, n_globs = get_class_n_members(get_glob_type()); _live_classes = eset_create (); - - _live_graphs = eset_create (); + _live_graphs = eset_create (); if (get_irp_main_irg ()) { eset_insert (_live_graphs, get_irp_main_irg ()); @@ -375,9 +376,10 @@ static void init_tables (void) } } -/* Initialise the RTA data structures, and perform RTA. - @param do_verbose If == 1, print statistics, if > 1, chatter about every detail -*/ +/* + * Initialise the RTA data structures, and perform RTA. + * do_verbose If == 1, print statistics, if > 1, chatter about every detail + */ void rta_init (int do_verbose) { int n_runs = 0; @@ -412,19 +414,23 @@ void rta_init (int do_verbose) # endif /* defined DEBUG_libfirm */ } - -void make_entity_to_description(type_or_ent *tore, void *env) { +/** + * walker for all types and entities + * + * Changes the peculiarity of entities that represents + * dead graphs to peculiarity_description. + */ +static void make_entity_to_description(type_or_ent *tore, void *env) { if (get_kind(tore) == k_entity) { entity *ent = (entity *)tore; if ((is_method_type(get_entity_type(ent))) && - (get_entity_peculiarity(ent) != peculiarity_description) && - (get_entity_visibility(ent) != visibility_external_allocated) ) { + (get_entity_peculiarity(ent) != peculiarity_description) && + (get_entity_visibility(ent) != visibility_external_allocated) ) { ir_graph *irg = get_entity_irg(get_SymConst_entity(get_atomic_ent_value(ent))); if (!eset_contains (_live_graphs, irg)) { - set_entity_peculiarity(ent, peculiarity_description); - set_entity_irg(ent, NULL); - set_atomic_ent_value(ent, new_Const(mode_P, get_tarval_null(mode_P))); + set_entity_peculiarity(ent, peculiarity_description); + set_entity_irg(ent, NULL); } } } @@ -460,7 +466,6 @@ void rta_delete_dead_graphs (void) } } - current_ir_graph = get_const_code_irg(); type_walk(make_entity_to_description, NULL, NULL); for (i = 0; i < n_dead_graphs; ++i) { remove_irp_irg (dead_graphs[i]); @@ -502,11 +507,7 @@ int rta_is_alive_class (type *clazz) /* Say whether this graph might be run at any time in the program: */ int rta_is_alive_graph (ir_graph *graph) { - if (eset_contains (_live_graphs, graph)) { - return (TRUE); - } - - return (FALSE); + return eset_contains (_live_graphs, graph); } /* dump our opinion */ @@ -532,6 +533,12 @@ void rta_report (void) /* * $Log$ + * Revision 1.25 2004/10/18 12:47:08 liekweg + * avoid warning + * + * Revision 1.24 2004/09/24 13:59:04 beck + * fixed doxygen comments, removed initialization for description entities + * * Revision 1.23 2004/08/19 16:51:02 goetz * fixed some errors, pushed closer to inteded firm semantics *