X-Git-Url: http://nsz.repo.hu/git/?a=blobdiff_plain;f=ir%2Fana%2Frta.c;h=7964fa8feb4b26154cc23ee67ada627ba8178c24;hb=0fbcef83aa6060534172bb13e71cdadb04428806;hp=bfe87c075ac7a345cd4cd626f1f9a55319564fb6;hpb=9b716841c3b0865b86af8d3890b3914060c37ed0;p=libfirm diff --git a/ir/ana/rta.c b/ir/ana/rta.c index bfe87c075..7964fa8fe 100644 --- a/ir/ana/rta.c +++ b/ir/ana/rta.c @@ -1,5 +1,5 @@ /* - * Copyrigth (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. * @@ -24,9 +24,7 @@ * @version 09.06.2002 * @version $Id$ */ -#ifdef HAVE_CONFIG_H -# include "config.h" -#endif +#include "config.h" #include "rta.h" @@ -39,9 +37,8 @@ #include "eset.h" #include "irgwalk.h" #include "irgmod.h" -#include "typewalk.h" #include "irvrfy.h" -#include "trvrfy.h" +#include "irprintf.h" # ifndef TRUE # define TRUE 1 @@ -108,8 +105,7 @@ static int add_graph (ir_graph *graph) { if (!eset_contains (_live_graphs, graph)) { if (verbose > 1) { - fprintf(stdout, "RTA: new graph of "); - DDMEO(get_irg_entity (graph)); + ir_fprintf(stdout, "RTA: new graph of %+F\n", graph); } eset_insert (_live_graphs, graph); @@ -130,8 +126,7 @@ static int add_class (ir_type *clazz) { if (!eset_contains (_live_classes, clazz)) { if (verbose > 1) { - fprintf(stdout, "RTA: new class: "); - DDMT(clazz); + ir_fprintf(stdout, "RTA: new class: %+F\n", clazz); } eset_insert (_live_classes, clazz); @@ -158,8 +153,7 @@ static int add_implementing_graphs (ir_entity *method) } if (verbose > 1) { - fprintf(stdout, "RTA: new call to "); - DDMEO(method); + ir_fprintf(stdout, "RTA: new call to %+F\n", method); } if (rta_is_alive_class (get_entity_owner (method))) { @@ -220,7 +214,6 @@ static void rta_act (ir_node *node, void *env) /* STRANGE */ } else { - DDMN(ptr); assert(0 && "Unexpected address expression: can not analyse, therefore can not do correct rta!"); } @@ -249,9 +242,11 @@ static int rta_fill_incremental (void) int i; int n_runs = 0; int rerun = TRUE; +#ifdef INTERPROCEDURAL_VIEW int old_ip_view = get_interprocedural_view(); set_interprocedural_view(0); /* save this for later */ +#endif /* init_tables has added main_irg to _live_graphs */ @@ -289,8 +284,8 @@ static int rta_fill_incremental (void) graph = eset_next (live_graphs)) { if (verbose > 1) { - fprintf(stdout, "RTA: RUN %i: considering graph of ", n_runs); - DDMEO(get_irg_entity (graph)); + ir_fprintf(stdout, "RTA: RUN %i: considering graph of %+F\n", n_runs, + graph); } rerun |= rta_fill_graph (graph); @@ -301,7 +296,9 @@ static int rta_fill_incremental (void) n_runs ++; } +#ifdef INTERPROCEDURAL_VIEW set_interprocedural_view(old_ip_view); /* cover up our traces */ +#endif return (n_runs); } @@ -354,7 +351,7 @@ static void force_description (ir_entity *ent, ir_entity *addr) ir_node *f_addr = get_atomic_ent_value (over); ir_entity *impl_ent = get_SymConst_entity (f_addr); - assert ((get_irn_op(f_addr) == op_SymConst) && "can't do complex addrs"); + assert(is_SymConst(f_addr) && "can't do complex addrs"); if (impl_ent == addr) { assert (0 && "gibt's denn sowas"); force_description (over, addr); @@ -452,9 +449,10 @@ void rta_init (int do_verbose) * 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) { - ir_entity *ent = (ir_entity *)tore; +static void make_entity_to_description(type_or_ent tore, void *env) { + (void) env; + if (is_entity(tore.ent)) { + ir_entity *ent = tore.ent; if ((is_Method_type(get_entity_type(ent))) && (get_entity_peculiarity(ent) != peculiarity_description) && @@ -482,9 +480,7 @@ void rta_delete_dead_graphs (void) int rem_vpi = get_visit_pseudo_irgs(); set_visit_pseudo_irgs(1); - if (!get_optimize() || !get_opt_dead_method_elimination()) return; - - dead_graphs = xmalloc(sizeof(*dead_graphs) * get_irp_n_irgs()); + dead_graphs = XMALLOCN(ir_graph*, get_irp_n_irgs()); for (i = 0; i < n_graphs; i++) { graph = get_irp_irg(i); @@ -558,147 +554,13 @@ void rta_report (void) for (i = 0; i < get_irp_n_types(); ++i) { ir_type *tp = get_irp_type(i); if (is_Class_type(tp) && rta_is_alive_class(tp)) { - fprintf(stdout, "RTA: considered allocated: "); DDMT(tp); + ir_fprintf(stdout, "RTA: considered allocated: %+F\n", tp); } } for (i = 0; i < get_irp_n_irgs(); i++) { if (rta_is_alive_graph (get_irp_irg(i))) { - fprintf(stdout, "RTA: considered called: graph of "); - DDMEO(get_irg_entity (get_irp_irg(i))); + ir_fprintf(stdout, "RTA: considered called: graph of %+F\n", get_irp_irg(i)); } } } - - -/* - * $Log$ - * Revision 1.41 2007/03/22 10:39:33 matze - * a bunch of fixes to make firm work with NDEBUG and without DEBUG_libfirm - * - * Revision 1.40 2007/01/16 15:45:15 beck - * renamed type opcode to ir_opcode - * - * Revision 1.39 2006/12/13 13:15:12 beck - * renamed entity -> ir_entity - * - * Revision 1.38 2006/12/12 16:12:05 beck - * Fixed missing initialization - * - * Revision 1.37 2006/12/11 15:28:48 matze - * - Several warning fixes - * - Fixes for compilation without DEBUG_libfirm - * - Fixed for compilation without WITH_LIBCORE (but it's still broken) - * - * Revision 1.36 2006/06/05 15:58:12 beck - * added support for Thread local storage - * added more doxygen docu - * - * Revision 1.35 2006/01/13 21:51:59 beck - * renamed all types 'type' to 'ir_type' - * - * Revision 1.34 2006/01/02 15:01:16 beck - * missing include added - * - * Revision 1.33 2005/11/17 17:26:57 beck - * removed bool type and depency from stdbool.h (not C89) - * - * Revision 1.32 2005/01/05 14:24:52 beck - * renames all is_x*_type() functions to is_X*_type() to prevent name clash with EDG frontend - * - * Revision 1.31 2004/12/21 13:45:14 beck - * removed C99 constructs - * - * Revision 1.30 2004/12/02 16:16:11 beck - * fixed config.h include - * used xmalloc instead of malloc - * - * Revision 1.29 2004/11/11 13:28:08 goetz - * made pseudo irg aware - * - * Revision 1.28 2004/11/03 14:47:18 beck - * removed gloval intraprocedural_view variable and replaced by get_*() set_*() functions - * - * Revision 1.27 2004/10/21 07:23:34 goetz - * comments - * - * Revision 1.26 2004/10/20 14:59:27 liekweg - * Removed ecg - * - * 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 - * - * Revision 1.22 2004/08/13 08:57:15 beyhan - * normalized names of functions, enums ... - * added suffix as argument to dumpers, removed global variable - * removed support for tarval/Const - * - * Revision 1.21 2004/07/08 15:50:56 goetz - * firmstat added - * - * Revision 1.20 2004/07/08 11:17:40 goetz - * *** empty log message *** - * - * Revision 1.19 2004/07/06 12:30:37 beyhan - * new SymConst semantics - * - * Revision 1.18 2004/06/27 21:17:41 liekweg - * Added comment - * - * Revision 1.17 2004/06/25 13:45:13 liekweg - * observe stickyness; minor refactoring - * - * Revision 1.16 2004/06/24 06:42:14 goetz - * test of firm flags - * - * Revision 1.15 2004/06/18 15:47:19 liekweg - * minor bug fix (go forward, not backward) --flo - * - * Revision 1.14 2004/06/18 13:12:43 liekweg - * final bug fix (calls via consts) - * - * Revision 1.13 2004/06/17 16:34:33 liekweg - * removed DD*s - * - * Revision 1.12 2004/06/17 16:33:33 liekweg - * minor bug fix - * - * Revision 1.11 2004/06/17 14:21:13 liekweg - * major bugfix - * - * Revision 1.10 2004/06/17 10:31:41 goetz - * irscc: bugfix, can now deal with loops not reachable from start - * cgana: bugfix, skip_Tuple - * rta: improved - * - * Revision 1.9 2004/06/17 08:56:03 liekweg - * Fixed typos in comments - * - * Revision 1.8 2004/06/17 08:33:01 liekweg - * Added comments; added remove_irg - * - * Revision 1.6 2004/06/14 13:02:03 goetz - * bugfixesbug - * - * Revision 1.5 2004/06/13 15:03:45 liekweg - * RTA auf Iterative RTA aufgebohrt --flo - * - * Revision 1.4 2004/06/12 19:35:04 liekweg - * Kommentare eingef"ugt --flo - * - * Revision 1.3 2004/06/12 17:09:46 liekweg - * RTA works, outedges breaks. "Yay." --flo - * - * Revision 1.2 2004/06/11 18:25:39 liekweg - * Added todo - * - * Revision 1.1 2004/06/11 18:24:18 liekweg - * Added RTA --flo - * - */