FYI. Dehao
https://codereview.appspot.com/6489092/diff/4001/gcc/common.opt File gcc/common.opt (right): https://codereview.appspot.com/6489092/diff/4001/gcc/common.opt#newcode1688 gcc/common.opt:1688: -fpmu-profile-use=[pmuprofile.gcda] The pmu profile data file to use for pmu feedback. Looks like the default value is not implemented. https://codereview.appspot.com/6489092/diff/4001/gcc/coverage.c File gcc/coverage.c (right): https://codereview.appspot.com/6489092/diff/4001/gcc/coverage.c#newcode777 gcc/coverage.c:777: +static void read_pmu_file (const char* da_file_name) This function is very large. How about splitting it into read_pmu_file and process_pmu_file (the second one builds the hash tables, etc.) https://codereview.appspot.com/6489092/diff/4001/gcc/coverage.c#newcode781 gcc/coverage.c:781: + brm_infos_t* brm_infos = &pmu_global_summary.brm_infos; For consistency, please move the "*" after the space. (many places in this file) https://codereview.appspot.com/6489092/diff/4001/gcc/coverage.c#newcode846 gcc/coverage.c:846: + unsigned length = gcov_read_unsigned (); Please use gcov_unsigned_t https://codereview.appspot.com/6489092/diff/4001/gcc/coverage.c#newcode847 gcc/coverage.c:847: + unsigned long base = gcov_position (); Please use gcov_position_t https://codereview.appspot.com/6489092/diff/4001/gcc/coverage.c#newcode940 gcc/coverage.c:940: + there should only be one entry per filename and line number */ add a gcc_assert in the else path? https://codereview.appspot.com/6489092/diff/4001/gcc/coverage.c#newcode966 gcc/coverage.c:966: + } The above two loops looks similar, can they be abstracted out? https://codereview.appspot.com/6489092/diff/4001/gcc/coverage.c#newcode2573 gcc/coverage.c:2573: + if (pmu_profile_data != 0 && TDF_PMU) if (pmu_profile_data != NULL && ...) or if (pmu_profile_data && ...) https://codereview.appspot.com/6489092/diff/4001/gcc/gcov-io.h File gcc/gcov-io.h (right): https://codereview.appspot.com/6489092/diff/4001/gcc/gcov-io.h#newcode705 gcc/gcov-io.h:705: /* Cumulative pmu data */ Seems this data structure should be moved into coverage.c. https://codereview.appspot.com/6489092/diff/4001/gcc/gcov.c File gcc/gcov.c (right): https://codereview.appspot.com/6489092/diff/4001/gcc/gcov.c#newcode2353 gcc/gcov.c:2353: + remove blank line https://codereview.appspot.com/6489092/diff/4001/gcc/gimple-pretty-print.c File gcc/gimple-pretty-print.c (right): https://codereview.appspot.com/6489092/diff/4001/gcc/gimple-pretty-print.c#newcode1585 gcc/gimple-pretty-print.c:1585: static void This function is very much like dump_pmu. Can we jus call dump_pmu here? https://codereview.appspot.com/6489092/diff/4001/gcc/tree-pretty-print.c File gcc/tree-pretty-print.c (right): https://codereview.appspot.com/6489092/diff/4001/gcc/tree-pretty-print.c#newcode28 gcc/tree-pretty-print.c:28: #include "basic-block.h" why need to include his header? https://codereview.appspot.com/6489092/diff/4001/gcc/tree-pretty-print.c#newcode519 gcc/tree-pretty-print.c:519: static void Looks to me that this function should be exported, while dump_load_latency_details should stay static. https://codereview.appspot.com/6489092/