OSDN Git Service

* decl.c (cp_finish_decl): Correct check for dynamic
authormmitchel <mmitchel@138bc75d-0d04-0410-961f-82ee72b054a4>
Tue, 1 Oct 2002 18:27:53 +0000 (18:27 +0000)
committermmitchel <mmitchel@138bc75d-0d04-0410-961f-82ee72b054a4>
Tue, 1 Oct 2002 18:27:53 +0000 (18:27 +0000)
initialization of thread-local storage.

* g++.dg/tls/init-2.C: Tweak error messages.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@57696 138bc75d-0d04-0410-961f-82ee72b054a4

gcc/cp/ChangeLog
gcc/cp/decl.c

index e6ea3fe..6d4031c 100644 (file)
@@ -1,3 +1,8 @@
+2002-10-01  Mark Mitchell  <mark@codesourcery.com>
+
+       * decl.c (cp_finish_decl): Correct check for dynamic
+       initialization of thread-local storage.
+
 2002-09-30  Nathan Sidwell  <nathan@codesourcery.com>
 
        * tree.c (really_overloaded_fn): TEMPLATE_ID_EXPRs are also
index fb6c776..eec8bbb 100644 (file)
@@ -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: