From: Matthias Braun Date: Sun, 28 Sep 2008 21:11:52 +0000 (+0000) Subject: also count remats X-Git-Url: http://nsz.repo.hu/git/?a=commitdiff_plain;h=69571e6a6dc4558b9fbd8d7a1236e77a2f984b73;p=libfirm also count remats [r22335] --- diff --git a/ir/be/bearch.h b/ir/be/bearch.h index b99680654..d82889d99 100644 --- a/ir/be/bearch.h +++ b/ir/be/bearch.h @@ -102,13 +102,14 @@ typedef enum arch_irn_class_t { arch_irn_class_normal = 1 << 0, arch_irn_class_spill = 1 << 1, arch_irn_class_reload = 1 << 2, - arch_irn_class_copy = 1 << 3, - arch_irn_class_perm = 1 << 4, - arch_irn_class_branch = 1 << 5, - arch_irn_class_call = 1 << 6, - arch_irn_class_load = 1 << 7, - arch_irn_class_store = 1 << 8, - arch_irn_class_stackparam = 1 << 9, + arch_irn_class_remat = 1 << 3, + arch_irn_class_copy = 1 << 4, + arch_irn_class_perm = 1 << 5, + arch_irn_class_branch = 1 << 6, + arch_irn_class_call = 1 << 7, + arch_irn_class_load = 1 << 8, + arch_irn_class_store = 1 << 9, + arch_irn_class_stackparam = 1 << 10, } arch_irn_class_t; /** diff --git a/ir/be/bechordal_main.c b/ir/be/bechordal_main.c index 5e2f38f85..e4862665d 100644 --- a/ir/be/bechordal_main.c +++ b/ir/be/bechordal_main.c @@ -232,6 +232,7 @@ typedef struct _node_stat_t { unsigned int n_perms; /**< Perms */ unsigned int n_spills; /**< Spill nodes */ unsigned int n_reloads; /**< Reloads */ + unsigned int n_remats; /**< Remats */ } node_stat_t; struct node_stat_walker { @@ -258,6 +259,8 @@ static void node_stat_walker(ir_node *irn, void *data) ++env->stat->n_spills; if(classify & arch_irn_class_reload) ++env->stat->n_reloads; + if(classify & arch_irn_class_remat) + ++env->stat->n_remats; if(classify & arch_irn_class_copy) ++env->stat->n_copies; if(classify & arch_irn_class_perm) @@ -521,6 +524,8 @@ static void be_ra_chordal_main(be_irg_t *birg) node_stat.n_mem_phis - last_node_stat.n_mem_phis); stat_ev_dbl("bechordal_reloads", node_stat.n_reloads - last_node_stat.n_reloads); + stat_ev_dbl("bechordal_remats", + node_stat.n_remats - last_node_stat.n_remats); stat_ev_dbl("bechordal_spills", node_stat.n_spills - last_node_stat.n_spills); stat_ev_dbl("bechordal_perms_after_coal", diff --git a/ir/be/ia32/bearch_ia32.c b/ir/be/ia32/bearch_ia32.c index 064067925..7267b0c4a 100644 --- a/ir/be/ia32/bearch_ia32.c +++ b/ir/be/ia32/bearch_ia32.c @@ -325,6 +325,9 @@ static arch_irn_class_t ia32_classify(const ir_node *irn) { if (is_ia32_is_spill(irn)) classification |= arch_irn_class_spill; + if (is_ia32_is_remat(irn)) + classification |= arch_irn_class_remat; + return classification; }