Hi. The patch prints total lines summary after all files are processed. Moreover, I remove a check in generate_results where we should be always given file_name != NULL.
Patch can bootstrap on x86_64-linux-gnu and survives regression tests. I'm planning to install the in next stage1 if there are not objections. Thanks, Martin gcc/ChangeLog: 2020-04-17 Martin Liska <mli...@suse.cz> PR gcov-profile/94636 * gcov.c (main): Print total lines summary at the end. (generate_results): Expect file_name always being non-null. Print newline after intermediate file is printed in order to align with what we do for normal files. --- gcc/gcov.c | 30 +++++++++++++++--------------- 1 file changed, 15 insertions(+), 15 deletions(-)
diff --git a/gcc/gcov.c b/gcc/gcov.c index a291bac3e9e..488847231c2 100644 --- a/gcc/gcov.c +++ b/gcc/gcov.c @@ -874,6 +874,9 @@ main (int argc, char **argv) } } + if (!flag_use_stdout) + executed_summary (total_lines, total_executed); + return 0; } @@ -1410,17 +1413,13 @@ generate_results (const char *file_name) } name_map needle; - - if (file_name) - { - needle.name = file_name; - vector<name_map>::iterator it = std::find (names.begin (), names.end (), - needle); - if (it != names.end ()) - file_name = sources[it->src].coverage.name; - else - file_name = canonicalize_name (file_name); - } + needle.name = file_name; + vector<name_map>::iterator it + = std::find (names.begin (), names.end (), needle); + if (it != names.end ()) + file_name = sources[it->src].coverage.name; + else + file_name = canonicalize_name (file_name); gcov_intermediate_filename = get_gcov_intermediate_filename (file_name); @@ -1462,7 +1461,11 @@ generate_results (const char *file_name) if (flag_gcov_file) { if (flag_json_format) - output_json_intermediate_file (json_files, src); + { + output_json_intermediate_file (json_files, src); + if (!flag_use_stdout) + fnotice (stdout, "\n"); + } else { if (flag_use_stdout) @@ -1509,9 +1512,6 @@ generate_results (const char *file_name) } } } - - if (!file_name) - executed_summary (total_lines, total_executed); } /* Release all memory used. */