aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--gcc/cp/ChangeLog6
-rw-r--r--gcc/cp/decl2.c4
-rw-r--r--gcc/testsuite/ChangeLog5
-rw-r--r--gcc/testsuite/g++.dg/gcov/pr88263-2.C25
4 files changed, 39 insertions, 1 deletions
diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog
index 32b2ab1..82412a7 100644
--- a/gcc/cp/ChangeLog
+++ b/gcc/cp/ChangeLog
@@ -1,3 +1,9 @@
+2019-01-14 Martin Liska <mliska@suse.cz>
+
+ PR gcov-profile/88263
+ * decl2.c (get_tls_wrapper_fn): Use DECL_SOURCE_LOCATION
+ as location of the TLS wrapper.
+
2019-01-12 Paolo Carlini <paolo.carlini@oracle.com>
* decl.c (cp_finish_decl): Improve error location.
diff --git a/gcc/cp/decl2.c b/gcc/cp/decl2.c
index e4cf4e0..1314ca8 100644
--- a/gcc/cp/decl2.c
+++ b/gcc/cp/decl2.c
@@ -3445,7 +3445,9 @@ get_tls_wrapper_fn (tree var)
tree type = non_reference (TREE_TYPE (var));
type = build_reference_type (type);
tree fntype = build_function_type (type, void_list_node);
- fn = build_lang_decl (FUNCTION_DECL, sname, fntype);
+
+ fn = build_lang_decl_loc (DECL_SOURCE_LOCATION (var),
+ FUNCTION_DECL, sname, fntype);
SET_DECL_LANGUAGE (fn, lang_c);
TREE_PUBLIC (fn) = TREE_PUBLIC (var);
DECL_ARTIFICIAL (fn) = true;
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog
index 09ed22a..093c362 100644
--- a/gcc/testsuite/ChangeLog
+++ b/gcc/testsuite/ChangeLog
@@ -1,3 +1,8 @@
+2019-01-14 Martin Liska <mliska@suse.cz>
+
+ PR gcov-profile/88263
+ * g++.dg/gcov/pr88263-2.C: New test.
+
2019-01-14 Jakub Jelinek <jakub@redhat.com>
PR rtl-optimization/88796
diff --git a/gcc/testsuite/g++.dg/gcov/pr88263-2.C b/gcc/testsuite/g++.dg/gcov/pr88263-2.C
new file mode 100644
index 0000000..f0cf15f
--- /dev/null
+++ b/gcc/testsuite/g++.dg/gcov/pr88263-2.C
@@ -0,0 +1,25 @@
+// PR gcov-profile/88263
+// { dg-options "-fprofile-arcs -ftest-coverage -std=c++11" }
+// { dg-do run { target native } }
+
+#include <sstream>
+
+namespace logging {
+ class Logstream {
+ ~Logstream();
+ static thread_local std::ostringstream os_;
+ };
+}
+namespace logging {
+ thread_local std::ostringstream Logstream::os_;
+ Logstream::~Logstream() {
+ os_.clear();
+ }
+}
+
+int main()
+{
+ return 0;
+}
+
+// { dg-final { run-gcov pr88263-2.C } }