PR3853: Add CodeGen support for __thread.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@69545 91177308-0d34-0410-b5e6-96231b3b80d8
diff --git a/lib/CodeGen/CGDecl.cpp b/lib/CodeGen/CGDecl.cpp
index c9e47eb..681d8f6 100644
--- a/lib/CodeGen/CGDecl.cpp
+++ b/lib/CodeGen/CGDecl.cpp
@@ -63,10 +63,6 @@
   if (D.hasAttr<AsmLabelAttr>())
     CGM.ErrorUnsupported(&D, "__asm__");
   
-  // We don't support __thread yet.
-  if (D.isThreadSpecified())
-    CGM.ErrorUnsupported(&D, "thread local ('__thread') variable", true);
-  
   switch (D.getStorageClass()) {
   case VarDecl::None:
   case VarDecl::Auto:
@@ -110,7 +106,8 @@
   const llvm::Type *LTy = CGM.getTypes().ConvertTypeForMem(Ty);
   return new llvm::GlobalVariable(LTy, Ty.isConstant(getContext()), Linkage,
                                   llvm::Constant::getNullValue(LTy), Name,
-                                  &CGM.getModule(), 0, Ty.getAddressSpace());
+                                  &CGM.getModule(), D.isThreadSpecified(),
+                                  Ty.getAddressSpace());
 }
 
 void CodeGenFunction::EmitStaticBlockVarDecl(const VarDecl &D) { 
@@ -145,7 +142,7 @@
         
         GV = new llvm::GlobalVariable(Init->getType(), OldGV->isConstant(),
                                       OldGV->getLinkage(), Init, "",
-                                      &CGM.getModule(), 0, 
+                                      &CGM.getModule(), D.isThreadSpecified(),
                                       D.getType().getAddressSpace());
 
         // Steal the name of the old global