From: jason Date: Fri, 31 Jan 2014 16:25:55 +0000 (+0000) Subject: PR c++/55800 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=b81ddff272899847934d237d65aa183c3f66da8d;p=thirdparty%2Fgcc.git PR c++/55800 * decl2.c (get_tls_init_fn): Copy DECL_EXTERNAL from the variable. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@207360 138bc75d-0d04-0410-961f-82ee72b054a4 --- diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog index 0909bf144171..4f38a6df366f 100644 --- a/gcc/cp/ChangeLog +++ b/gcc/cp/ChangeLog @@ -1,3 +1,8 @@ +2014-01-31 Jason Merrill + + PR c++/55800 + * decl2.c (get_tls_init_fn): Copy DECL_EXTERNAL from the variable. + 2014-01-31 Paolo Carlini PR c++/59082 diff --git a/gcc/cp/decl2.c b/gcc/cp/decl2.c index b2103c802df7..22165915b924 100644 --- a/gcc/cp/decl2.c +++ b/gcc/cp/decl2.c @@ -2949,7 +2949,7 @@ get_tls_init_fn (tree var) TREE_PUBLIC (fn) = TREE_PUBLIC (var); DECL_ARTIFICIAL (fn) = true; DECL_COMDAT (fn) = DECL_COMDAT (var); - DECL_EXTERNAL (fn) = true; + DECL_EXTERNAL (fn) = DECL_EXTERNAL (var); if (DECL_ONE_ONLY (var)) make_decl_one_only (fn, cxx_comdat_group (fn)); if (TREE_PUBLIC (var)) diff --git a/gcc/testsuite/g++.dg/tls/thread_local8.C b/gcc/testsuite/g++.dg/tls/thread_local8.C new file mode 100644 index 000000000000..206e7b34d076 --- /dev/null +++ b/gcc/testsuite/g++.dg/tls/thread_local8.C @@ -0,0 +1,11 @@ +// PR c++/55800 +// { dg-options "-std=c++11" } +// { dg-require-alias "" } +// { dg-final { scan-assembler "_ZTH12foo_instance" { target tls_native } } } + +struct foo +{ + foo(); +}; + +thread_local foo foo_instance;