public inbox for gcc-patches@gcc.gnu.org
 help / color / mirror / Atom feed
* [PATCH] Fix target clones (PR gcov-profile/85370).
@ 2018-07-25 13:38 Martin Liška
  2018-07-25 13:51 ` Richard Biener
  0 siblings, 1 reply; 5+ messages in thread
From: Martin Liška @ 2018-07-25 13:38 UTC (permalink / raw)
  To: gcc-patches; +Cc: Nathan Sidwell

[-- Attachment #1: Type: text/plain, Size: 1448 bytes --]

Hi.

Target clones have DECL_ARTIFICIAL set to 1, but we want to
provide --coverage for that. With patched GCC on can see:

        -:    0:Source:pr85370.c
        -:    0:Graph:pr85370.gcno
        -:    0:Data:pr85370.gcda
        -:    0:Runs:1
        -:    0:Programs:1
        -:    1:__attribute__((target_clones("arch=slm","default")))
        1:    2:int foo1 (int a, int b) { // executed #### wrongly
        1:    3:  return a + b;
        -:    4:}
------------------
foo1.arch_slm.0:
        0:    2:int foo1 (int a, int b) { // executed #### wrongly
        0:    3:  return a + b;
        -:    4:}
------------------
foo1.default.1:
        1:    2:int foo1 (int a, int b) { // executed #### wrongly
        1:    3:  return a + b;
        -:    4:}
------------------
        -:    5:
        1:    6:int foo2 (int a, int b) {
        1:    7:  return a + b;
        -:    8:}
        -:    9:
        1:   10:int main() {
        1:   11:  foo1(1, 1);
        1:   12:  foo2(1, 1);
        1:   13:  return 1;
        -:   14:}

Patch can bootstrap on ppc64le-redhat-linux and survives regression tests.
Will install in couple of days if no objection.

Martin

gcc/ChangeLog:

2018-07-25  Martin Liska  <mliska@suse.cz>

        PR gcov-profile/85370
	* coverage.c (coverage_begin_function): Do not mark target
        clones as artificial functions.
---
 gcc/coverage.c | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)



[-- Attachment #2: 0001-Fix-target-clones-PR-gcov-profile-85370.patch --]
[-- Type: text/x-patch, Size: 660 bytes --]

diff --git a/gcc/coverage.c b/gcc/coverage.c
index da171c84d3c..bae6f5cafac 100644
--- a/gcc/coverage.c
+++ b/gcc/coverage.c
@@ -656,7 +656,8 @@ coverage_begin_function (unsigned lineno_checksum, unsigned cfg_checksum)
   gcov_write_unsigned (cfg_checksum);
   gcov_write_string (IDENTIFIER_POINTER
 		     (DECL_ASSEMBLER_NAME (current_function_decl)));
-  gcov_write_unsigned (DECL_ARTIFICIAL (current_function_decl));
+  gcov_write_unsigned (DECL_ARTIFICIAL (current_function_decl)
+		       && !DECL_FUNCTION_VERSIONED (current_function_decl));
   gcov_write_filename (xloc.file);
   gcov_write_unsigned (xloc.line);
   gcov_write_unsigned (xloc.column);


^ permalink raw reply	[flat|nested] 5+ messages in thread

end of thread, other threads:[~2018-08-01 11:02 UTC | newest]

Thread overview: 5+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2018-07-25 13:38 [PATCH] Fix target clones (PR gcov-profile/85370) Martin Liška
2018-07-25 13:51 ` Richard Biener
2018-07-26  8:44   ` Martin Liška
2018-07-26  9:00     ` Richard Biener
2018-08-01 11:02       ` Martin Liška

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).