Commit 93814e2d by Martin Liska Committed by Martin Liska

GCOV: do not support unexecuted blocks in Ada

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.

From-SVN: r254627
parent 1ea8c961
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> 2017-11-10 Bin Cheng <bin.cheng@arm.com>
* tree-predcom.c (determine_roots_comp): Avoid memory leak by freeing * tree-predcom.c (determine_roots_comp): Avoid memory leak by freeing
...@@ -1269,6 +1269,9 @@ coverage_init (const char *filename) ...@@ -1269,6 +1269,9 @@ coverage_init (const char *filename)
gcov_write_unsigned (GCOV_NOTE_MAGIC); gcov_write_unsigned (GCOV_NOTE_MAGIC);
gcov_write_unsigned (GCOV_VERSION); gcov_write_unsigned (GCOV_VERSION);
gcov_write_unsigned (bbg_file_stamp); gcov_write_unsigned (bbg_file_stamp);
/* Do not support has_unexecuted_blocks for Ada. */
gcov_write_unsigned (strcmp (lang_hooks.name, "GNU Ada") != 0);
} }
} }
......
...@@ -374,7 +374,7 @@ marked @samp{$$$$$} or @samp{%%%%%}, depending on whether a basic block ...@@ -374,7 +374,7 @@ marked @samp{$$$$$} or @samp{%%%%%}, depending on whether a basic block
is reachable via non-exceptional or exceptional paths. is reachable via non-exceptional or exceptional paths.
Executed basic blocks having a statement with zero @var{execution_count} Executed basic blocks having a statement with zero @var{execution_count}
end with @samp{*} character and are colored with magenta color with @option{-k} 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 Note that GCC can completely remove the bodies of functions that are
not needed -- for instance if they are inlined everywhere. Such functions not needed -- for instance if they are inlined everywhere. Such functions
......
...@@ -217,6 +217,11 @@ dump_gcov_file (const char *filename) ...@@ -217,6 +217,11 @@ dump_gcov_file (const char *filename)
printf ("%s:stamp %lu\n", filename, (unsigned long)stamp); 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) while (1)
{ {
gcov_position_t base, position = gcov_position (); gcov_position_t base, position = gcov_position ();
......
...@@ -424,6 +424,9 @@ static char *bbg_file_name; ...@@ -424,6 +424,9 @@ static char *bbg_file_name;
/* Stamp of the bbg file */ /* Stamp of the bbg file */
static unsigned bbg_stamp; 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). */ /* Name and file pointer of the input file for the count data (gcda). */
static char *da_file_name; static char *da_file_name;
...@@ -1492,6 +1495,7 @@ read_graph_file (void) ...@@ -1492,6 +1495,7 @@ read_graph_file (void)
bbg_file_name, v, e); bbg_file_name, v, e);
} }
bbg_stamp = gcov_read_unsigned (); bbg_stamp = gcov_read_unsigned ();
bbg_supports_has_unexecuted_blocks = gcov_read_unsigned ();
while ((tag = gcov_read_unsigned ())) while ((tag = gcov_read_unsigned ()))
{ {
...@@ -2732,7 +2736,8 @@ output_line_beginning (FILE *f, bool exists, bool unexceptional, ...@@ -2732,7 +2736,8 @@ output_line_beginning (FILE *f, bool exists, bool unexceptional,
if (count > 0) if (count > 0)
{ {
s = format_gcov (count, 0, -1); s = format_gcov (count, 0, -1);
if (has_unexecuted_block) if (has_unexecuted_block
&& bbg_supports_has_unexecuted_blocks)
{ {
if (flag_use_colors) if (flag_use_colors)
{ {
......
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