Removed ANNOUNCE macro
[libfirm] / ir / stat / stat_dmp.c
index 043d091..8aa9e42 100644 (file)
@@ -190,8 +190,8 @@ static void simple_dump_be_block_reg_pressure(dumper_t *dmp, graph_entry_t *entr
 
 /** prints a distribution entry */
 static void simple_dump_distrib_entry(const distrib_entry_t *entry, void *env) {
-       FILE *dmp_f = env;
-       fprintf(dmp_f, "%12d", cnt_to_uint(&entry->cnt));
+       dumper_t *dmp = env;
+       fprintf(dmp->f, "%12d", cnt_to_uint(&entry->cnt));
 }  /* simple_dump_distrib_entry */
 
 /**
@@ -213,7 +213,7 @@ static void simple_dump_be_block_sched_ready(dumper_t *dmp, graph_entry_t *entry
                                stat_insert_int_distrib_tbl(b_entry->sched_ready, i);
 
                        fprintf(dmp->f, "BLK   %6ld", b_entry->block_nr);
-                       stat_iterate_distrib_tbl(b_entry->sched_ready, simple_dump_distrib_entry, dmp->f);
+                       stat_iterate_distrib_tbl(b_entry->sched_ready, simple_dump_distrib_entry, dmp);
                        fprintf(dmp->f, "%12.2lf", stat_calc_avg_distrib_tbl(b_entry->sched_ready));
                        fprintf(dmp->f, "\n");
                }  /* foreach_pset */
@@ -398,20 +398,20 @@ static void simple_dump_graph(dumper_t *dmp, graph_entry_t *entry)
                        " calls                     : %u\n"
                        " indirect calls            : %u\n",
                        entry->is_deleted ? "DELETED " : "",
-                       cnt_to_uint(&entry->cnt_walked), cnt_to_uint(&entry->cnt_walked_blocks),
-                       cnt_to_uint(&entry->cnt_was_inlined),
-                       cnt_to_uint(&entry->cnt_got_inlined),
-                       cnt_to_uint(&entry->cnt_strength_red),
+                       cnt_to_uint(&entry->cnt[gcnt_acc_walked]), cnt_to_uint(&entry->cnt[gcnt_acc_walked_blocks]),
+                       cnt_to_uint(&entry->cnt[gcnt_acc_was_inlined]),
+                       cnt_to_uint(&entry->cnt[gcnt_acc_got_inlined]),
+                       cnt_to_uint(&entry->cnt[gcnt_acc_strength_red]),
                        entry->is_leaf ? "YES" : "NO",
                        entry->is_leaf_call == LCS_NON_LEAF_CALL ? "NO" : (entry->is_leaf_call == LCS_LEAF_CALL ? "Yes" : "Maybe"),
                        entry->is_recursive ? "YES" : "NO",
                        entry->is_chain_call ? "YES" : "NO",
-                       cnt_to_uint(&entry->cnt_all_calls),
-                       cnt_to_uint(&entry->cnt_indirect_calls)
+                       cnt_to_uint(&entry->cnt[gcnt_all_calls]),
+                       cnt_to_uint(&entry->cnt[gcnt_indirect_calls])
                );
 
-               for (i = 0; i < sizeof(entry->cnt_if_conv)/sizeof(entry->cnt_if_conv[0]); ++i) {
-                       fprintf(dmp->f, " %s : %u\n", if_conv_names[i], cnt_to_uint(&entry->cnt_if_conv[i]));
+               for (i = 0; i < IF_RESULT_LAST; ++i) {
+                       fprintf(dmp->f, " %s : %u\n", if_conv_names[i], cnt_to_uint(&entry->cnt[gcnt_if_conv + i]));
                }  /* for */
        } else {
                fprintf(dmp->f, "\nGlobals counts:\n");
@@ -421,19 +421,34 @@ static void simple_dump_graph(dumper_t *dmp, graph_entry_t *entry)
 
        /* address ops */
        fprintf(dmp->f,
-               " pure address calculation ops: %u\n"
-               " all address calculation ops : %u\n",
-               cnt_to_uint(&entry->cnt_pure_adr_ops),
-               cnt_to_uint(&entry->cnt_all_adr_ops));
+               " pure address calc ops     : %u\n"
+               " all address calc ops      : %u\n",
+               cnt_to_uint(&entry->cnt[gcnt_pure_adr_ops]),
+               cnt_to_uint(&entry->cnt[gcnt_all_adr_ops])
+       );
+
+       /* Load/Store address classification */
+       fprintf(dmp->f,
+               " global Ld/St address      : %u\n"
+               " local Ld/St address       : %u\n"
+               " this Ld/St address        : %u\n"
+               " param Ld/St address       : %u\n"
+               " other Ld/St address       : %u\n",
+               cnt_to_uint(&entry->cnt[gcnt_global_adr]),
+               cnt_to_uint(&entry->cnt[gcnt_local_adr]),
+               cnt_to_uint(&entry->cnt[gcnt_this_adr]),
+               cnt_to_uint(&entry->cnt[gcnt_param_adr]),
+               cnt_to_uint(&entry->cnt[gcnt_other_adr])
+       );
 
        simple_dump_opcode_hash(dmp, entry->opcode_hash);
-       simple_dump_edges(dmp, &entry->cnt_edges);
+       simple_dump_edges(dmp, &entry->cnt[gcnt_edges]);
 
        /* effects of optimizations */
        if (dump_opts) {
                int i;
 
-               simple_dump_real_func_calls(dmp, &entry->cnt_real_func_call);
+               simple_dump_real_func_calls(dmp, &entry->cnt[gcnt_acc_real_func_call]);
                simple_dump_tail_recursion(dmp, entry->num_tail_recursion);
 
                for (i = 0; i < sizeof(entry->opt_hash)/sizeof(entry->opt_hash[0]); ++i) {
@@ -445,12 +460,12 @@ static void simple_dump_graph(dumper_t *dmp, graph_entry_t *entry)
                foreach_pset(entry->block_hash, b_entry) {
                        fprintf(dmp->f, "BLK   %6ld %12u %12u %12u %12u %12u %4.8f\n",
                                b_entry->block_nr,
-                               cnt_to_uint(&b_entry->cnt_nodes),
-                               cnt_to_uint(&b_entry->cnt_edges),
-                               cnt_to_uint(&b_entry->cnt_in_edges),
-                               cnt_to_uint(&b_entry->cnt_out_edges),
-                               cnt_to_uint(&b_entry->cnt_phi_data),
-                               cnt_to_dbl(&b_entry->cnt_edges) / cnt_to_dbl(&b_entry->cnt_nodes)
+                               cnt_to_uint(&b_entry->cnt[bcnt_nodes]),
+                               cnt_to_uint(&b_entry->cnt[bcnt_edges]),
+                               cnt_to_uint(&b_entry->cnt[bcnt_in_edges]),
+                               cnt_to_uint(&b_entry->cnt[bcnt_out_edges]),
+                               cnt_to_uint(&b_entry->cnt[bcnt_phi_data]),
+                               cnt_to_dbl(&b_entry->cnt[bcnt_edges]) / cnt_to_dbl(&b_entry->cnt[bcnt_nodes])
                        );
                }  /* foreach_pset */
 
@@ -469,12 +484,12 @@ static void simple_dump_graph(dumper_t *dmp, graph_entry_t *entry)
                        foreach_pset(entry->extbb_hash, eb_entry) {
                                fprintf(dmp->f, "ExtBB %6ld %12u %12u %12u %12u %12u %4.8f\n",
                                        eb_entry->block_nr,
-                                       cnt_to_uint(&eb_entry->cnt_nodes),
-                                       cnt_to_uint(&eb_entry->cnt_edges),
-                                       cnt_to_uint(&eb_entry->cnt_in_edges),
-                                       cnt_to_uint(&eb_entry->cnt_out_edges),
-                                       cnt_to_uint(&eb_entry->cnt_phi_data),
-                                       cnt_to_dbl(&eb_entry->cnt_edges) / cnt_to_dbl(&eb_entry->cnt_nodes)
+                                       cnt_to_uint(&eb_entry->cnt[bcnt_nodes]),
+                                       cnt_to_uint(&eb_entry->cnt[bcnt_edges]),
+                                       cnt_to_uint(&eb_entry->cnt[bcnt_in_edges]),
+                                       cnt_to_uint(&eb_entry->cnt[bcnt_out_edges]),
+                                       cnt_to_uint(&eb_entry->cnt[bcnt_phi_data]),
+                                       cnt_to_dbl(&eb_entry->cnt[bcnt_edges]) / cnt_to_dbl(&eb_entry->cnt[bcnt_nodes])
                                );
                        }  /* foreach_pset */
                }  /* if */
@@ -521,6 +536,31 @@ static void simple_dump_const_tbl(dumper_t *dmp, const constant_info_t *tbl)
        fprintf(dmp->f, "sum   %12u\n", cnt_to_uint(&sum));
 }  /* simple_dump_const_tbl */
 
+/**
+ * Dumps a line of the parameter table
+ */
+static void dump_tbl_line(const distrib_entry_t *entry, void *env) {
+       dumper_t *dmp = env;
+
+       fprintf(dmp->f, "%d : %u\n", PTR_TO_INT(entry->object), cnt_to_uint(&entry->cnt));
+}  /* dump_tbl_line */
+
+/**
+ * dumps the parameter distribution table
+ */
+static void simple_dump_param_tbl(dumper_t *dmp, const distrib_tbl_t *tbl, graph_entry_t *global) {
+       fprintf(dmp->f, "\nCall parameter Information:\n");
+       fprintf(dmp->f, "---------------------\n");
+
+       stat_iterate_distrib_tbl(tbl, dump_tbl_line, dmp);
+       fprintf(dmp->f, "-------------------------------\n");
+
+       fprintf(dmp->f, "Number of Calls           %12u\n", cnt_to_uint(&global->cnt[gcnt_all_calls]));
+       fprintf(dmp->f, "with const params         %12u\n", cnt_to_uint(&global->cnt[gcnt_call_with_cnst_arg]));
+       fprintf(dmp->f, "with all const params     %12u\n", cnt_to_uint(&global->cnt[gcnt_call_with_all_cnst_arg]));
+       fprintf(dmp->f, "with local var adr params %12u\n", cnt_to_uint(&global->cnt[gcnt_call_with_local_adr]));
+}  /* simple_dump_param_tbl */
+
 /**
  * initialize the simple dumper
  */
@@ -549,6 +589,7 @@ static void simple_finish(dumper_t *dmp) {
 const dumper_t simple_dumper = {
        simple_dump_graph,
        simple_dump_const_tbl,
+       simple_dump_param_tbl,
        simple_init,
        simple_finish,
        NULL,
@@ -638,6 +679,13 @@ static void csv_dump_const_tbl(dumper_t *dmp, const constant_info_t *tbl)
        /* FIXME: NYI */
 }  /* csv_dump_const_tbl */
 
+/**
+ * dumps the parameter distribution table
+ */
+static void csv_dump_param_tbl(dumper_t *dmp, const distrib_tbl_t *tbl, graph_entry_t *global) {
+       /* FIXME: NYI */
+}  /* csv_dump_param_tbl */
+
 /**
  * initialize the simple dumper
  */
@@ -667,6 +715,7 @@ static void csv_finish(dumper_t *dmp)
 const dumper_t csv_dumper = {
        csv_dump_graph,
        csv_dump_const_tbl,
+       csv_dump_param_tbl,
        csv_init,
        csv_finish,
        NULL,