From: Mark Mitchell Date: Tue, 1 Oct 2002 18:27:53 +0000 (+0000) Subject: decl.c (cp_finish_decl): Correct check for dynamic initialization of thread-local... X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=b4c20e524ce008387c6efe06d10fbd4a488d8654;p=gcc.git decl.c (cp_finish_decl): Correct check for dynamic initialization of thread-local storage. * decl.c (cp_finish_decl): Correct check for dynamic initialization of thread-local storage. * g++.dg/tls/init-2.C: Tweak error messages. From-SVN: r57696 --- diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog index e6ea3fe2306..6d4031c425b 100644 --- a/gcc/cp/ChangeLog +++ b/gcc/cp/ChangeLog @@ -1,3 +1,8 @@ +2002-10-01 Mark Mitchell + + * decl.c (cp_finish_decl): Correct check for dynamic + initialization of thread-local storage. + 2002-09-30 Nathan Sidwell * tree.c (really_overloaded_fn): TEMPLATE_ID_EXPRs are also diff --git a/gcc/cp/decl.c b/gcc/cp/decl.c index fb6c776e65f..eec8bbb8baa 100644 --- a/gcc/cp/decl.c +++ b/gcc/cp/decl.c @@ -8218,6 +8218,13 @@ cp_finish_decl (decl, init, asmspec_tree, flags) && (!DECL_EXTERNAL (decl) || init)) { init = check_initializer (decl, init); + /* Thread-local storage cannot be dynamically initialized. */ + if (DECL_THREAD_LOCAL (decl) && init) + { + error ("`%D' is thread-local and so cannot be dynamically " + "initialized", decl); + init = NULL_TREE; + } /* If DECL has an array type without a specific bound, deduce the array size from the initializer. Note that this must be done after check_initializer is called because of cases like this: