aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMartin Liska <mliska@suse.cz>2016-07-22 12:19:57 +0200
committerMartin Liska <marxin@gcc.gnu.org>2016-07-22 10:19:57 +0000
commitbc91c4361527fb229ad47f20a45de0b3160f2de9 (patch)
tree7d61a4e799f8e9fba5938c4b59cb017add066d75
parent9fe9a3a780c9cd8f5fa45e162640b7169c27fe8f (diff)
downloadgcc-bc91c4361527fb229ad47f20a45de0b3160f2de9.zip
gcc-bc91c4361527fb229ad47f20a45de0b3160f2de9.tar.gz
gcc-bc91c4361527fb229ad47f20a45de0b3160f2de9.tar.bz2
Consider functions with xloc.file == NULL (PR
PR gcov-profile/69028 PR gcov-profile/62047 * g++.dg/cilk-plus/pr69028.C: New test. PR gcov-profile/69028 PR gcov-profile/62047 * cilk.c (create_cilk_helper_decl): Set location of a new decl to the current_function_decl. PR gcov-profile/69028 PR gcov-profile/62047 * coverage.c (coverage_compute_lineno_checksum): Do not calculate checksum for fns w/o xloc.file. (coverage_compute_profile_id): Likewise. From-SVN: r238637
-rw-r--r--gcc/ChangeLog8
-rw-r--r--gcc/c-family/ChangeLog7
-rw-r--r--gcc/c-family/cilk.c5
-rw-r--r--gcc/coverage.c6
-rw-r--r--gcc/testsuite/ChangeLog6
-rw-r--r--gcc/testsuite/g++.dg/cilk-plus/pr69028.C13
6 files changed, 41 insertions, 4 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 36104da..f889abd 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,11 @@
+2016-07-22 Martin Liska <mliska@suse.cz>
+
+ PR gcov-profile/69028
+ PR gcov-profile/62047
+ * coverage.c (coverage_compute_lineno_checksum): Do not
+ calculate checksum for fns w/o xloc.file.
+ (coverage_compute_profile_id): Likewise.
+
2016-07-22 Georg-Johann Lay <avr@gjlay.de>
* config/avr/avr.c (TARGET_SECONDARY_RELOAD): Remove hook define...
diff --git a/gcc/c-family/ChangeLog b/gcc/c-family/ChangeLog
index e244e8a..ba6093a 100644
--- a/gcc/c-family/ChangeLog
+++ b/gcc/c-family/ChangeLog
@@ -1,3 +1,10 @@
+2016-07-22 Martin Liska <mliska@suse.cz>
+
+ PR gcov-profile/69028
+ PR gcov-profile/62047
+ * cilk.c (create_cilk_helper_decl): Set location of a new decl
+ to the current_function_decl.
+
2016-07-21 Jason Merrill <jason@redhat.com>
PR c++/65168
diff --git a/gcc/c-family/cilk.c b/gcc/c-family/cilk.c
index 8f34cd6..39781c4 100644
--- a/gcc/c-family/cilk.c
+++ b/gcc/c-family/cilk.c
@@ -312,8 +312,9 @@ create_cilk_helper_decl (struct wrapper_data *wd)
gcc_unreachable ();
clean_symbol_name (name);
- tree fndecl = build_decl (UNKNOWN_LOCATION, FUNCTION_DECL,
- get_identifier (name), wd->fntype);
+
+ tree fndecl = build_decl (DECL_SOURCE_LOCATION (current_function_decl),
+ FUNCTION_DECL, get_identifier (name), wd->fntype);
TREE_PUBLIC (fndecl) = 0;
TREE_STATIC (fndecl) = 1;
diff --git a/gcc/coverage.c b/gcc/coverage.c
index 67cc908..d4d371e 100644
--- a/gcc/coverage.c
+++ b/gcc/coverage.c
@@ -553,7 +553,8 @@ coverage_compute_lineno_checksum (void)
= expand_location (DECL_SOURCE_LOCATION (current_function_decl));
unsigned chksum = xloc.line;
- chksum = coverage_checksum_string (chksum, xloc.file);
+ if (xloc.file)
+ chksum = coverage_checksum_string (chksum, xloc.file);
chksum = coverage_checksum_string
(chksum, IDENTIFIER_POINTER (DECL_ASSEMBLER_NAME (current_function_decl)));
@@ -580,7 +581,8 @@ coverage_compute_profile_id (struct cgraph_node *n)
bool use_name_only = (PARAM_VALUE (PARAM_PROFILE_FUNC_INTERNAL_ID) == 0);
chksum = (use_name_only ? 0 : xloc.line);
- chksum = coverage_checksum_string (chksum, xloc.file);
+ if (xloc.file)
+ chksum = coverage_checksum_string (chksum, xloc.file);
chksum = coverage_checksum_string
(chksum, IDENTIFIER_POINTER (DECL_ASSEMBLER_NAME (n->decl)));
if (!use_name_only && first_global_object_name)
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog
index 662eda6..656a6c2 100644
--- a/gcc/testsuite/ChangeLog
+++ b/gcc/testsuite/ChangeLog
@@ -1,3 +1,9 @@
+2016-07-22 Martin Liska <mliska@suse.cz>
+
+ PR gcov-profile/69028
+ PR gcov-profile/62047
+ * g++.dg/cilk-plus/pr69028.C: New test.
+
2016-07-22 Andre Vehreschild <vehre@gcc.gnu.org>
* gfortran.dg/coarray_stat_2.f90: New test.
diff --git a/gcc/testsuite/g++.dg/cilk-plus/pr69028.C b/gcc/testsuite/g++.dg/cilk-plus/pr69028.C
new file mode 100644
index 0000000..31542f3
--- /dev/null
+++ b/gcc/testsuite/g++.dg/cilk-plus/pr69028.C
@@ -0,0 +1,13 @@
+// PR c++/69028
+// { dg-require-effective-target c++11 }
+// { dg-options "-fcilkplus -fprofile-arcs" }
+
+void parallel()
+{
+}
+
+int main()
+{
+ _Cilk_spawn parallel();
+ _Cilk_sync;
+}