GCOV: support multiple functions per a line (PR gcov-profile/48463)
commita82502ddf807cdd25fe04879390310727156ab42
authormarxin <marxin@138bc75d-0d04-0410-961f-82ee72b054a4>
Thu, 9 Nov 2017 09:11:17 +0000 (9 09:11 +0000)
committermarxin <marxin@138bc75d-0d04-0410-961f-82ee72b054a4>
Thu, 9 Nov 2017 09:11:17 +0000 (9 09:11 +0000)
tree3d35f88384d1fc66a1a463a1b060b85bc366a37d
parentf5f219fdb75a8a7f6ee63d4ab5dbfa530b3b301d
GCOV: support multiple functions per a line (PR gcov-profile/48463)

2017-11-09  Martin Liska  <mliska@suse.cz>

PR gcov-profile/48463
* coverage.c (coverage_begin_function): Output also end locus
of a function and information whether the function is
artificial.
* gcov-dump.c (tag_function): Parse and print the information.
* gcov.c (INCLUDE_MAP): Add include.
(INCLUDE_SET): Likewise.
(struct line_info): Move earlier in the source file because
of vector<line_info> in function_info structure.
(line_info::line_info): Likewise.
(line_info::has_block): Likewise.
(struct source_info): Add new member index.
(source_info::get_functions_at_location): New function.
(function_info::group_line_p): New function.
(output_intermediate_line): New function.
(output_intermediate_file): Use the mentioned function.
(struct function_start): New.
(struct function_start_pair_hash): Likewise.
(process_file): Add code that identifies group functions.
Assign lines either to global or function scope.
(generate_results): Skip artificial functions.
(find_source): Assign index for each source file.
(read_graph_file): Read new flag artificial and end_line.
(add_line_counts): Assign it either to global of function scope.
(accumulate_line_counts): Isolate core of the function to
accumulate_line_info and call it for both function and global
scope lines.
(accumulate_line_info): New function.
(output_line_beginning): Fix GNU coding style.
(print_source_line): New function.
(output_line_details): Likewise.
(output_function_details): Likewise.
(output_lines): Iterate both source (global) scope and function
scope.
(struct function_line_start_cmp): New class.
* doc/gcov.texi: Reflect changes in documentation.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@254562 138bc75d-0d04-0410-961f-82ee72b054a4
gcc/ChangeLog
gcc/coverage.c
gcc/doc/gcov.texi
gcc/gcov-dump.c
gcc/gcov.c