------- Comment #14 from ktietz at gcc dot gnu dot org  2010-05-18 15:18 -------
Hi Dave,

following patch solves the issue for me pretty well.

ChangeLog

      * varasm.c (emutls_decl): Clone attributes for new decl.

Index: gcc/gcc/varasm.c
===================================================================
--- gcc.orig/gcc/varasm.c       2010-05-18 13:19:20.000000000 +0200
+++ gcc/gcc/varasm.c    2010-05-18 17:10:11.385445300 +0200
@@ -403,6 +403,8 @@ emutls_decl (tree decl)
        int foo() { return i; }
        __thread int i = 1;
      in which I goes from external to locally defined and initialized.  */
+  DECL_DLLIMPORT_P (to) = DECL_DLLIMPORT_P (decl);
+  DECL_ATTRIBUTES (to) = targetm.merge_decl_attributes (decl, to);

   TREE_STATIC (to) = TREE_STATIC (decl);
   TREE_USED (to) = TREE_USED (decl);


-- 


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=44139

Reply via email to