Hi, I just noticed -fdump-statistics supports asmname sub-option, which according to the doc states: "If DECL_ASSEMBLER_NAME has been set for a given decl, use that in the dump instead of DECL_NAME. Its primary use is ease of use working backward from mangled names in the assembly file."
When passed -fdump-statistics-asmname, the dump however still contains the original name of functions. The patch modifies statistics.cc to emit asm name of function instead. Also for C++, it helps to better disambiguate overloaded function names in the stats dump file. I have attached stats dump for a simple test-case. Does it look OK ? Thanks, Prathamesh
diff --git a/gcc/statistics.cc b/gcc/statistics.cc
index 0d596e34189..ff4f9cc7fb6 100644
--- a/gcc/statistics.cc
+++ b/gcc/statistics.cc
@@ -25,6 +25,7 @@ along with GCC; see the file COPYING3. If not see
#include "tree-pass.h"
#include "context.h"
#include "pass_manager.h"
+#include "tree.h"
static int statistics_dump_nr;
static dump_flags_t statistics_dump_flags;
@@ -113,6 +114,21 @@ curr_statistics_hash (void)
return statistics_hashes[idx];
}
+/* Helper function to return asmname or name of FN
+ depending on whether asmname option is set. */
+
+static const char *
+get_function_name (struct function *fn)
+{
+ if (statistics_dump_flags & TDF_ASMNAME)
+ {
+ tree asmname = decl_assembler_name (fn->decl);
+ if (asmname)
+ return IDENTIFIER_POINTER (asmname);
+ }
+ return function_name (fn);
+}
+
/* Helper for statistics_fini_pass. Print the counter difference
since the last dump for the pass dump files. */
@@ -152,7 +168,7 @@ statistics_fini_pass_2 (statistics_counter **slot,
current_pass->static_pass_number,
current_pass->name,
counter->id, counter->val,
- current_function_name (),
+ get_function_name (cfun),
count);
else
fprintf (statistics_dump_file,
@@ -160,7 +176,7 @@ statistics_fini_pass_2 (statistics_counter **slot,
current_pass->static_pass_number,
current_pass->name,
counter->id,
- current_function_name (),
+ get_function_name (cfun),
count);
counter->prev_dumped_count = counter->count;
return 1;
@@ -329,7 +345,7 @@ statistics_counter_event (struct function *fn, const char
*id, int incr)
current_pass ? current_pass->static_pass_number : -1,
current_pass ? current_pass->name : "none",
id,
- function_name (fn),
+ get_function_name (fn),
incr);
}
@@ -359,5 +375,5 @@ statistics_histogram_event (struct function *fn, const char
*id, int val)
current_pass->static_pass_number,
current_pass->name,
id, val,
- function_name (fn));
+ get_function_name (fn));
}
foo.cpp
Description: Binary data
29 ssa "unused VAR_DECLs removed" "foo" 1 47 fre "RPO blocks" "foo" 1 47 fre "RPO iterations == 10" "foo" 1 47 fre "RPO blocks visited" "foo" 1 47 fre "RPO blocks executable" "foo" 1 47 fre "RPO block visited times == 1" "foo" 1 47 fre "RPO num avail == 1" "foo" 1 47 fre "RPO num values == 3" "foo" 1 47 fre "RPO num lattice == 3" "foo" 1 47 fre "RPO num values == 2" "foo" 1 47 fre "RPO blocks" "foo" 1 47 fre "RPO iterations == 10" "foo" 1 47 fre "RPO num lattice == 2" "foo" 1 47 fre "RPO blocks visited" "foo" 1 47 fre "RPO blocks executable" "foo" 1 47 fre "RPO block visited times == 1" "foo" 1 47 fre "RPO num avail == 1" "foo" 1 120 fre "RPO blocks" "foo" 1 120 fre "RPO iterations == 10" "foo" 1 120 fre "RPO blocks visited" "foo" 1 120 fre "RPO blocks executable" "foo" 1 120 fre "RPO block visited times == 1" "foo" 1 120 fre "RPO num avail == 1" "foo" 1 120 fre "RPO num values == 3" "foo" 1 120 fre "RPO num lattice == 3" "foo" 1 151 pre "RPO blocks" "foo" 1 151 pre "RPO iterations == 10" "foo" 1 151 pre "compute_antic iterations == 2" "foo" 1 151 pre "RPO blocks visited" "foo" 1 151 pre "RPO blocks executable" "foo" 1 151 pre "RPO block visited times == 1" "foo" 1 151 pre "RPO num avail == 1" "foo" 1 151 pre "RPO num values == 3" "foo" 1 151 pre "RPO num lattice == 3" "foo" 1 151 pre "insert iterations == 1" "foo" 1 201 fre "RPO blocks" "foo" 1 201 fre "RPO iterations == 10" "foo" 1 201 fre "RPO blocks visited" "foo" 1 201 fre "RPO blocks executable" "foo" 1 201 fre "RPO block visited times == 1" "foo" 1 201 fre "RPO num avail == 1" "foo" 1 201 fre "RPO num values == 3" "foo" 1 201 fre "RPO num lattice == 3" "foo" 1 293 combine "two-insn combine" "foo" 2 120 fre "RPO num values == 2" "foo" 1 120 fre "RPO blocks" "foo" 1 120 fre "RPO iterations == 10" "foo" 1 120 fre "RPO num lattice == 2" "foo" 1 120 fre "RPO blocks visited" "foo" 1 120 fre "RPO blocks executable" "foo" 1 120 fre "RPO block visited times == 1" "foo" 1 120 fre "RPO num avail == 1" "foo" 1 151 pre "RPO num values == 2" "foo" 1 151 pre "RPO blocks" "foo" 1 151 pre "RPO iterations == 10" "foo" 1 151 pre "compute_antic iterations == 2" "foo" 1 151 pre "RPO num lattice == 2" "foo" 1 151 pre "RPO blocks visited" "foo" 1 151 pre "RPO blocks executable" "foo" 1 151 pre "RPO block visited times == 1" "foo" 1 151 pre "RPO num avail == 1" "foo" 1 151 pre "insert iterations == 1" "foo" 1 201 fre "RPO num values == 2" "foo" 1 201 fre "RPO blocks" "foo" 1 201 fre "RPO iterations == 10" "foo" 1 201 fre "RPO num lattice == 2" "foo" 1 201 fre "RPO blocks visited" "foo" 1 201 fre "RPO blocks executable" "foo" 1 201 fre "RPO block visited times == 1" "foo" 1 201 fre "RPO num avail == 1" "foo" 1
29 ssa "unused VAR_DECLs removed" "_Z3fooi" 1 47 fre "RPO blocks" "_Z3fooii" 1 47 fre "RPO iterations == 10" "_Z3fooii" 1 47 fre "RPO blocks visited" "_Z3fooii" 1 47 fre "RPO blocks executable" "_Z3fooii" 1 47 fre "RPO block visited times == 1" "_Z3fooii" 1 47 fre "RPO num avail == 1" "_Z3fooii" 1 47 fre "RPO num values == 3" "_Z3fooii" 1 47 fre "RPO num lattice == 3" "_Z3fooii" 1 47 fre "RPO num values == 2" "_Z3fooi" 1 47 fre "RPO blocks" "_Z3fooi" 1 47 fre "RPO iterations == 10" "_Z3fooi" 1 47 fre "RPO num lattice == 2" "_Z3fooi" 1 47 fre "RPO blocks visited" "_Z3fooi" 1 47 fre "RPO blocks executable" "_Z3fooi" 1 47 fre "RPO block visited times == 1" "_Z3fooi" 1 47 fre "RPO num avail == 1" "_Z3fooi" 1 120 fre "RPO blocks" "_Z3fooii" 1 120 fre "RPO iterations == 10" "_Z3fooii" 1 120 fre "RPO blocks visited" "_Z3fooii" 1 120 fre "RPO blocks executable" "_Z3fooii" 1 120 fre "RPO block visited times == 1" "_Z3fooii" 1 120 fre "RPO num avail == 1" "_Z3fooii" 1 120 fre "RPO num values == 3" "_Z3fooii" 1 120 fre "RPO num lattice == 3" "_Z3fooii" 1 151 pre "RPO blocks" "_Z3fooii" 1 151 pre "RPO iterations == 10" "_Z3fooii" 1 151 pre "compute_antic iterations == 2" "_Z3fooii" 1 151 pre "RPO blocks visited" "_Z3fooii" 1 151 pre "RPO blocks executable" "_Z3fooii" 1 151 pre "RPO block visited times == 1" "_Z3fooii" 1 151 pre "RPO num avail == 1" "_Z3fooii" 1 151 pre "RPO num values == 3" "_Z3fooii" 1 151 pre "RPO num lattice == 3" "_Z3fooii" 1 151 pre "insert iterations == 1" "_Z3fooii" 1 201 fre "RPO blocks" "_Z3fooii" 1 201 fre "RPO iterations == 10" "_Z3fooii" 1 201 fre "RPO blocks visited" "_Z3fooii" 1 201 fre "RPO blocks executable" "_Z3fooii" 1 201 fre "RPO block visited times == 1" "_Z3fooii" 1 201 fre "RPO num avail == 1" "_Z3fooii" 1 201 fre "RPO num values == 3" "_Z3fooii" 1 201 fre "RPO num lattice == 3" "_Z3fooii" 1 293 combine "two-insn combine" "_Z3fooii" 2 120 fre "RPO num values == 2" "_Z3fooi" 1 120 fre "RPO blocks" "_Z3fooi" 1 120 fre "RPO iterations == 10" "_Z3fooi" 1 120 fre "RPO num lattice == 2" "_Z3fooi" 1 120 fre "RPO blocks visited" "_Z3fooi" 1 120 fre "RPO blocks executable" "_Z3fooi" 1 120 fre "RPO block visited times == 1" "_Z3fooi" 1 120 fre "RPO num avail == 1" "_Z3fooi" 1 151 pre "RPO num values == 2" "_Z3fooi" 1 151 pre "RPO blocks" "_Z3fooi" 1 151 pre "RPO iterations == 10" "_Z3fooi" 1 151 pre "compute_antic iterations == 2" "_Z3fooi" 1 151 pre "RPO num lattice == 2" "_Z3fooi" 1 151 pre "RPO blocks visited" "_Z3fooi" 1 151 pre "RPO blocks executable" "_Z3fooi" 1 151 pre "RPO block visited times == 1" "_Z3fooi" 1 151 pre "RPO num avail == 1" "_Z3fooi" 1 151 pre "insert iterations == 1" "_Z3fooi" 1 201 fre "RPO num values == 2" "_Z3fooi" 1 201 fre "RPO blocks" "_Z3fooi" 1 201 fre "RPO iterations == 10" "_Z3fooi" 1 201 fre "RPO num lattice == 2" "_Z3fooi" 1 201 fre "RPO blocks visited" "_Z3fooi" 1 201 fre "RPO blocks executable" "_Z3fooi" 1 201 fre "RPO block visited times == 1" "_Z3fooi" 1 201 fre "RPO num avail == 1" "_Z3fooi" 1
