diff options
author | Chris Lattner <sabre@nondot.org> | 2007-04-23 20:34:46 +0000 |
---|---|---|
committer | Chris Lattner <sabre@nondot.org> | 2007-04-23 20:34:46 +0000 |
commit | 73f3fd775f7484bc2de080a494a08f019483547f (patch) | |
tree | b173a1976941a94b29696a9e639ac7e0eba04b5e | |
parent | 56c42ef3e43f8eb75c435e781d0ac8251c7588a1 (diff) |
Fix a bug in bitstream writer handling abbrevs, add value symtab
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@36373 91177308-0d34-0410-b5e6-96231b3b80d8
-rw-r--r-- | include/llvm/Bitcode/BitstreamWriter.h | 11 | ||||
-rw-r--r-- | include/llvm/Bitcode/LLVMBitCodes.h | 7 |
2 files changed, 12 insertions, 6 deletions
diff --git a/include/llvm/Bitcode/BitstreamWriter.h b/include/llvm/Bitcode/BitstreamWriter.h index aa2a653e53..eaf2e4317c 100644 --- a/include/llvm/Bitcode/BitstreamWriter.h +++ b/include/llvm/Bitcode/BitstreamWriter.h @@ -147,12 +147,8 @@ public: EmitVBR(CodeLen, bitc::CodeLenWidth); FlushToWord(); BlockScope.push_back(Block(CurCodeSize, Out.size()/4)); - - // Delete all abbrevs. - for (unsigned i = 0, e = CurAbbrevs.size(); i != e; ++i) - delete CurAbbrevs[i]; - BlockScope.back().PrevAbbrevs.swap(CurAbbrevs); + // Emit a placeholder, which will be replaced when the block is popped. Emit(0, bitc::BlockSizeWidth); @@ -161,6 +157,11 @@ public: void ExitBlock() { assert(!BlockScope.empty() && "Block scope imbalance!"); + + // Delete all abbrevs. + for (unsigned i = 0, e = CurAbbrevs.size(); i != e; ++i) + delete CurAbbrevs[i]; + const Block &B = BlockScope.back(); // Block tail: diff --git a/include/llvm/Bitcode/LLVMBitCodes.h b/include/llvm/Bitcode/LLVMBitCodes.h index bdabc2e77e..bf59893153 100644 --- a/include/llvm/Bitcode/LLVMBitCodes.h +++ b/include/llvm/Bitcode/LLVMBitCodes.h @@ -33,7 +33,7 @@ namespace bitc { GLOBALCONSTANTS_BLOCK_ID = 3, FUNCTION_BLOCK_ID = 4, TYPE_SYMTAB_BLOCK_ID = 5, - GLOBAL_SYMTAB_BLOCK_ID = 6 + VALUE_SYMTAB_BLOCK_ID = 6 }; @@ -81,6 +81,11 @@ namespace bitc { TST_ENTRY_CODE = 1 // TST_ENTRY: [typeid, namelen, namechar x N] }; + // The value symbol table only has one code (VST_ENTRY_CODE). + enum ValueSymtabCodes { + VST_ENTRY_CODE = 1 // VST_ENTRY: [valid, namelen, namechar x N] + }; + } // End bitc namespace } // End llvm namespace |