summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMartin Liska <mliska@suse.cz>2017-11-10 15:40:17 +0100
committerMartin Liska <marxin@gcc.gnu.org>2017-11-10 14:40:17 +0000
commit93814e2d690f7ccae4d87365b66d05cfa4a11576 (patch)
treeefaaa92985c6a0c1060cfc6bbc8e9b3292a1ae5a
parent1ea8c961c82baa476503a04a81c73519971e0380 (diff)
downloadgcc-93814e2d690f7ccae4d87365b66d05cfa4a11576.tar.gz
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
-rw-r--r--gcc/ChangeLog10
-rw-r--r--gcc/coverage.c3
-rw-r--r--gcc/doc/gcov.texi2
-rw-r--r--gcc/gcov-dump.c5
-rw-r--r--gcc/gcov.c7
5 files changed, 25 insertions, 2 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 1ed540a29e3..de86f33961b 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -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
diff --git a/gcc/coverage.c b/gcc/coverage.c
index f57897b8314..ea05d94f441 100644
--- a/gcc/coverage.c
+++ b/gcc/coverage.c
@@ -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);
}
}
diff --git a/gcc/doc/gcov.texi b/gcc/doc/gcov.texi
index 6f6a92c131a..8bf422e58d8 100644
--- a/gcc/doc/gcov.texi
+++ b/gcc/doc/gcov.texi
@@ -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
diff --git a/gcc/gcov-dump.c b/gcc/gcov-dump.c
index c4e05cd4795..e5e649cb18f 100644
--- a/gcc/gcov-dump.c
+++ b/gcc/gcov-dump.c
@@ -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 ();
diff --git a/gcc/gcov.c b/gcc/gcov.c
index 846a2326196..7152372ef31 100644
--- a/gcc/gcov.c
+++ b/gcc/gcov.c
@@ -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;
@@ -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 ()))
{
@@ -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)
{