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