diff options
author | Lauro Ramos Venancio <lauro.venancio@gmail.com> | 2007-04-12 18:32:50 +0000 |
---|---|---|
committer | Lauro Ramos Venancio <lauro.venancio@gmail.com> | 2007-04-12 18:32:50 +0000 |
commit | c763552299165b88d34a7d4f2d76ff413cbc7f67 (patch) | |
tree | bf83c987dadf556bcc766f071383969b0812058b /lib/Bytecode/Writer/Writer.cpp | |
parent | 558385fd93a89a3f2186c5c76b6735cea32ac333 (diff) |
Implement the "thread_local" keyword.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@35950 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib/Bytecode/Writer/Writer.cpp')
-rw-r--r-- | lib/Bytecode/Writer/Writer.cpp | 11 |
1 files changed, 6 insertions, 5 deletions
diff --git a/lib/Bytecode/Writer/Writer.cpp b/lib/Bytecode/Writer/Writer.cpp index dfc84be037..c48bb223a8 100644 --- a/lib/Bytecode/Writer/Writer.cpp +++ b/lib/Bytecode/Writer/Writer.cpp @@ -950,7 +950,7 @@ void BytecodeWriter::outputModuleInfoBlock(const Module *M) { "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 @@ void BytecodeWriter::outputModuleInfoBlock(const Module *M) { // 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 = |