X-Git-Url: http://nsz.repo.hu/git/?a=blobdiff_plain;f=ir%2Fbe%2Fbepressurestat.c;h=ff234b0605788e33fab6371e432392809a13b70a;hb=cbe8608ae6f9a523d007919691104b444c92d004;hp=cb0d1c2c01e95f402f076243e6433162c42f931d;hpb=d6768d8d4427959eb045aafb1d15bd189beaa5dd;p=libfirm diff --git a/ir/be/bepressurestat.c b/ir/be/bepressurestat.c index cb0d1c2c0..ff234b060 100644 --- a/ir/be/bepressurestat.c +++ b/ir/be/bepressurestat.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. * @@ -24,9 +24,9 @@ * @date 06.04.2006 * @version $Id$ */ -#ifdef HAVE_CONFIG_H #include "config.h" -#endif + +#include "bepressurestat.h" #include @@ -43,46 +43,41 @@ #include "irnode_t.h" #include "ircons_t.h" #include "irloop_t.h" -#include "phiclass.h" #include "iredges.h" #include "execfreq.h" #include "irtools.h" -#include - #include "be_t.h" #include "belive_t.h" -#include "besched_t.h" +#include "besched.h" #include "beirgmod.h" -#include "bearch_t.h" -#include "benode_t.h" +#include "bearch.h" +#include "benode.h" #include "beutil.h" -#include "bespillremat.h" #include "bespill.h" -#include "beirg_t.h" +#include "beirg.h" #define MAXPRESSURE 128 typedef struct _regpressure_ana_t { - arch_env_t *arch_env; const arch_register_class_t *cls; const be_lv_t *lv; unsigned int *stat; DEBUG_ONLY(firm_dbg_module_t *dbg); } regpressure_ana_t; -static INLINE int has_reg_class(const regpressure_ana_t *ra, const ir_node *irn) +static inline int has_reg_class(const regpressure_ana_t *ra, const ir_node *irn) { - return arch_irn_consider_in_reg_alloc(ra->arch_env, ra->cls, irn); + return arch_irn_consider_in_reg_alloc(ra->cls, irn); } -static INLINE int regpressure(pset *live) { +static inline int regpressure(pset *live) +{ int pressure = pset_count(live); return MIN(pressure, MAXPRESSURE); } -static void -regpressureanawalker(ir_node *bb, void *data) +static void regpressureanawalker(ir_node *bb, void *data) { regpressure_ana_t *ra = data; pset *live = pset_new_ptr_default(); @@ -133,21 +128,20 @@ void be_analyze_regpressure(be_irg_t *birg, const arch_register_class_t *cls, co f = fopen(fname, "w"); assert(f); - be_assure_liveness(birg); + be_liveness_assure_sets(be_assure_liveness(birg)); FIRM_DBG_REGISTER(ra.dbg, "firm.be.regpressureana"); - ra.arch_env = birg->main_env->arch_env; - ra.lv = be_get_birg_liveness(birg); - ra.cls = cls; - ra.stat = stat; + ra.lv = be_get_birg_liveness(birg); + ra.cls = cls; + ra.stat = stat; memset(stat, 0, sizeof(stat)); irg_block_walk_graph(irg, regpressureanawalker, NULL, &ra); for (i = 0; i <= MAXPRESSURE; ++i) { - fprintf(f, "%d\n", stat[i]); + fprintf(f, "%u\n", stat[i]); } fclose(f);