Skip to content

Commit

Permalink
GCOV: do not support unexecuted blocks in Ada
Browse files Browse the repository at this point in the history
2017-11-10  Martin Liska  <mliska@suse.cz>

	* coverage.c (coverage_init): Stream information about
	support of has_unexecuted_blocks.
	* doc/gcov.texi: Document that.
	* gcov-dump.c (dump_gcov_file): Support it in gcov_dump tool.
	* gcov.c (read_graph_file): Likewise.
	(output_line_beginning): Fix a small issue with
	color output.


git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@254627 138bc75d-0d04-0410-961f-82ee72b054a4
  • Loading branch information
marxin committed Nov 10, 2017
1 parent 430a6bc commit fa6f8ae
Show file tree
Hide file tree
Showing 5 changed files with 25 additions and 2 deletions.
10 changes: 10 additions & 0 deletions gcc/ChangeLog
Original file line number Diff line number Diff line change
@@ -1,3 +1,13 @@
2017-11-10 Martin Liska <mliska@suse.cz>

* coverage.c (coverage_init): Stream information about
support of has_unexecuted_blocks.
* doc/gcov.texi: Document that.
* gcov-dump.c (dump_gcov_file): Support it in gcov_dump tool.
* gcov.c (read_graph_file): Likewise.
(output_line_beginning): Fix a small issue with
color output.

2017-11-10 Bin Cheng <bin.cheng@arm.com>

* tree-predcom.c (determine_roots_comp): Avoid memory leak by freeing
Expand Down
3 changes: 3 additions & 0 deletions gcc/coverage.c
Original file line number Diff line number Diff line change
Expand Up @@ -1269,6 +1269,9 @@ coverage_init (const char *filename)
gcov_write_unsigned (GCOV_NOTE_MAGIC);
gcov_write_unsigned (GCOV_VERSION);
gcov_write_unsigned (bbg_file_stamp);

/* Do not support has_unexecuted_blocks for Ada. */
gcov_write_unsigned (strcmp (lang_hooks.name, "GNU Ada") != 0);
}
}

Expand Down
2 changes: 1 addition & 1 deletion gcc/doc/gcov.texi
Original file line number Diff line number Diff line change
Expand Up @@ -374,7 +374,7 @@ marked @samp{$$$$$} or @samp{%%%%%}, depending on whether a basic block
is reachable via non-exceptional or exceptional paths.
Executed basic blocks having a statement with zero @var{execution_count}
end with @samp{*} character and are colored with magenta color with @option{-k}
option.
option. The functionality is not supported in Ada.

Note that GCC can completely remove the bodies of functions that are
not needed -- for instance if they are inlined everywhere. Such functions
Expand Down
5 changes: 5 additions & 0 deletions gcc/gcov-dump.c
Original file line number Diff line number Diff line change
Expand Up @@ -217,6 +217,11 @@ dump_gcov_file (const char *filename)
printf ("%s:stamp %lu\n", filename, (unsigned long)stamp);
}

/* Support for unexecuted basic blocks. */
unsigned support_unexecuted_blocks = gcov_read_unsigned ();
if (!support_unexecuted_blocks)
printf ("%s: has_unexecuted_block is not supported\n", filename);

while (1)
{
gcov_position_t base, position = gcov_position ();
Expand Down
7 changes: 6 additions & 1 deletion gcc/gcov.c
Original file line number Diff line number Diff line change
Expand Up @@ -424,6 +424,9 @@ static char *bbg_file_name;
/* Stamp of the bbg file */
static unsigned bbg_stamp;

/* Supports has_unexecuted_blocks functionality. */
static unsigned bbg_supports_has_unexecuted_blocks;

/* Name and file pointer of the input file for the count data (gcda). */

static char *da_file_name;
Expand Down Expand Up @@ -1492,6 +1495,7 @@ read_graph_file (void)
bbg_file_name, v, e);
}
bbg_stamp = gcov_read_unsigned ();
bbg_supports_has_unexecuted_blocks = gcov_read_unsigned ();

while ((tag = gcov_read_unsigned ()))
{
Expand Down Expand Up @@ -2732,7 +2736,8 @@ output_line_beginning (FILE *f, bool exists, bool unexceptional,
if (count > 0)
{
s = format_gcov (count, 0, -1);
if (has_unexecuted_block)
if (has_unexecuted_block
&& bbg_supports_has_unexecuted_blocks)
{
if (flag_use_colors)
{
Expand Down

0 comments on commit fa6f8ae

Please sign in to comment.