diff --git a/lib/Bytecode/Reader/Analyzer.cpp b/lib/Bytecode/Reader/Analyzer.cpp
index aef482a..2a752d7 100644
--- a/lib/Bytecode/Reader/Analyzer.cpp
+++ b/lib/Bytecode/Reader/Analyzer.cpp
@@ -154,12 +154,14 @@
     GlobalValue::LinkageTypes Linkage,
     GlobalValue::VisibilityTypes Visibility,
     unsigned SlotNum,
-    unsigned initSlot
+    unsigned initSlot,
+    bool isThreadLocal
   ) {
     if (os) {
       *os << "      GV: "
           << ( initSlot == 0 ? "Uni" : "I" ) << "nitialized, "
           << ( isConstant? "Constant, " : "Variable, ")
+          << " Thread Local = " << ( isThreadLocal? "yes, " : "no, ")
           << " Linkage=" << Linkage
           << " Visibility="<< Visibility
           << " Type=";
diff --git a/lib/Bytecode/Reader/Reader.cpp b/lib/Bytecode/Reader/Reader.cpp
index fd4a5492..4979269 100644
--- a/lib/Bytecode/Reader/Reader.cpp
+++ b/lib/Bytecode/Reader/Reader.cpp
@@ -1704,11 +1704,12 @@
   unsigned VarType = read_vbr_uint();
   while (VarType != Type::VoidTyID) { // List is terminated by Void
     // VarType Fields: bit0 = isConstant, bit1 = hasInitializer, bit2,3,4 =
-    // Linkage, bit4+ = slot#
-    unsigned SlotNo = VarType >> 5;
+    // Linkage, bit5 = isThreadLocal, bit6+ = slot#
+    unsigned SlotNo = VarType >> 6;
     unsigned LinkageID = (VarType >> 2) & 7;
     unsigned VisibilityID = 0;
     bool isConstant = VarType & 1;
+    bool isThreadLocal = (VarType >> 5) & 1;
     bool hasInitializer = (VarType & 2) != 0;
     unsigned Alignment = 0;
     unsigned GlobalSectionID = 0;
@@ -1764,7 +1765,7 @@
 
     // Create the global variable...
     GlobalVariable *GV = new GlobalVariable(ElTy, isConstant, Linkage,
-                                            0, "", TheModule);
+                                            0, "", TheModule, isThreadLocal);
     GV->setAlignment(Alignment);
     GV->setVisibility(Visibility);
     insertValue(GV, SlotNo, ModuleValues);
@@ -1781,7 +1782,7 @@
     // Notify handler about the global value.
     if (Handler)
       Handler->handleGlobalVariable(ElTy, isConstant, Linkage, Visibility,
-                                    SlotNo, initSlot);
+                                    SlotNo, initSlot, isThreadLocal);
 
     // Get next item
     VarType = read_vbr_uint();
diff --git a/lib/Bytecode/Writer/Writer.cpp b/lib/Bytecode/Writer/Writer.cpp
index dfc84be..c48bb22 100644
--- a/lib/Bytecode/Writer/Writer.cpp
+++ b/lib/Bytecode/Writer/Writer.cpp
@@ -950,7 +950,7 @@
            "Global must have an initializer or have external linkage!");
     
     // Fields: bit0 = isConstant, bit1 = hasInitializer, bit2-4=Linkage,
-    // bit5+ = Slot # for type.
+    // bit5 = isThreadLocal, bit6+ = Slot # for type.
     bool HasExtensionWord = (I->getAlignment() != 0) ||
                             I->hasSection() ||
       (I->getVisibility() != GlobalValue::DefaultVisibility);
@@ -958,12 +958,13 @@
     // If we need to use the extension byte, set linkage=3(internal) and
     // initializer = 0 (impossible!).
     if (!HasExtensionWord) {
-      unsigned oSlot = (Slot << 5) | (getEncodedLinkage(I) << 2) |
-                        (I->hasInitializer() << 1) | (unsigned)I->isConstant();
+      unsigned oSlot = (Slot << 6)| (((unsigned)I->isThreadLocal()) << 5) |
+                       (getEncodedLinkage(I) << 2) | (I->hasInitializer() << 1)
+                       | (unsigned)I->isConstant();
       output_vbr(oSlot);
     } else {  
-      unsigned oSlot = (Slot << 5) | (3 << 2) |
-                        (0 << 1) | (unsigned)I->isConstant();
+      unsigned oSlot = (Slot << 6) | (((unsigned)I->isThreadLocal()) << 5) |
+                       (3 << 2) | (0 << 1) | (unsigned)I->isConstant();
       output_vbr(oSlot);
       
       // The extension word has this format: bit 0 = has initializer, bit 1-3 =
