Commit e59b5e24 by Martin Liska Committed by Martin Liska

Make groups more generic (PR gcov-profile/84548).

2018-02-27  Martin Liska  <mliska@suse.cz>

	PR gcov-profile/84548
	* gcov.c (process_file): Allow partial overlap and consider it
	also as group functions.
	(output_lines): Properly calculate range of lines for a group.
2018-02-27  Martin Liska  <mliska@suse.cz>

	PR gcov-profile/84548
	* g++.dg/gcov/pr84548.C: New test.

From-SVN: r258033
parent 23c3a059
2018-02-27 Martin Liska <mliska@suse.cz>
PR gcov-profile/84548
* gcov.c (process_file): Allow partial overlap and consider it
also as group functions.
(output_lines): Properly calculate range of lines for a group.
2018-02-27 Martin Liska <mliska@suse.cz>
* timevar.c (timer::print_row): Remove 'usr', 'sys', 'wall' and
'ggc' suffixes. Change first column width.
(timer::print): Fix formatting of the column.
......
......@@ -1151,7 +1151,6 @@ process_file (const char *file_name)
function_info **slot = fn_map.get (needle);
if (slot)
{
gcc_assert ((*slot)->end_line == (*it)->end_line);
(*slot)->is_group = 1;
(*it)->is_group = 1;
}
......@@ -2957,7 +2956,14 @@ output_lines (FILE *gcov_file, const source_info *src)
{
fns = src->get_functions_at_location (line_num);
if (fns.size () > 1)
line_start_group = fns[0]->end_line;
{
/* It's possible to have functions that partially overlap,
thus take the maximum end_line of functions starting
at LINE_NUM. */
for (unsigned i = 0; i < fns.size (); i++)
if (fns[i]->end_line > line_start_group)
line_start_group = fns[i]->end_line;
}
else if (fns.size () == 1)
{
function_info *fn = fns[0];
......
2018-02-27 Martin Liska <mliska@suse.cz>
PR gcov-profile/84548
* g++.dg/gcov/pr84548.C: New test.
2018-02-27 Jakub Jelinek <jakub@redhat.com>
PR target/84575
......
// PR gcov-profile/84548
// { dg-options "-fprofile-arcs -ftest-coverage" }
// { dg-do run { target native } }
// TODO: add support for groups to gcov.exp script
struct A { static int foo () { return 1; }; static int bar () {
int x;
return 2; } };
int main()
{
int a = A::foo () + A::bar ();
if (a != 3)
return 1;
return 0;
}
// { dg-final { run-gcov remove-gcda pr84548.C } }
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment