From 15f4e33db7e7b0c466db39eccfc693c910459368 Mon Sep 17 00:00:00 2001 From: Martin Liska Date: Mon, 14 Jan 2019 19:40:34 +0100 Subject: [PATCH] Fix location of tls_wrapper_fn (PR gcov-profile/88263). 2019-01-14 Martin Liska PR gcov-profile/88263 * decl2.c (get_tls_wrapper_fn): Use DECL_SOURCE_LOCATION as location of the TLS wrapper. 2019-01-14 Martin Liska PR gcov-profile/88263 * g++.dg/gcov/pr88263-2.C: New test. From-SVN: r267921 --- gcc/cp/ChangeLog | 6 ++++++ gcc/cp/decl2.c | 4 +++- gcc/testsuite/ChangeLog | 5 +++++ gcc/testsuite/g++.dg/gcov/pr88263-2.C | 25 +++++++++++++++++++++++++ 4 files changed, 39 insertions(+), 1 deletion(-) create mode 100644 gcc/testsuite/g++.dg/gcov/pr88263-2.C diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog index 32b2ab1f82e..82412a78926 100644 --- a/gcc/cp/ChangeLog +++ b/gcc/cp/ChangeLog @@ -1,3 +1,9 @@ +2019-01-14 Martin Liska + + 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 * decl.c (cp_finish_decl): Improve error location. diff --git a/gcc/cp/decl2.c b/gcc/cp/decl2.c index e4cf4e0a361..1314ca812ee 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 09ed22a909c..093c362f13d 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,8 @@ +2019-01-14 Martin Liska + + PR gcov-profile/88263 + * g++.dg/gcov/pr88263-2.C: New test. + 2019-01-14 Jakub Jelinek 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 00000000000..f0cf15f5d0a --- /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 + +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 } } -- 2.30.2