From a727d5502c8e23c090da658bf14c5ebc1169a070 Mon Sep 17 00:00:00 2001 From: Chris Lattner Date: Fri, 4 May 2007 18:25:49 +0000 Subject: [PATCH] minor cleanups. Add provisions for a new standard BLOCKINFO_BLOCK block type. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@36748 91177308-0d34-0410-b5e6-96231b3b80d8 --- include/llvm/Bitcode/BitCodes.h | 32 ++++++++++++++++++++++---- include/llvm/Bitcode/BitstreamReader.h | 2 +- include/llvm/Bitcode/BitstreamWriter.h | 6 ++--- include/llvm/Bitcode/LLVMBitCodes.h | 18 +++++++-------- 4 files changed, 41 insertions(+), 17 deletions(-) diff --git a/include/llvm/Bitcode/BitCodes.h b/include/llvm/Bitcode/BitCodes.h index 15a7a4943dc..647c28fb398 100644 --- a/include/llvm/Bitcode/BitCodes.h +++ b/include/llvm/Bitcode/BitCodes.h @@ -30,9 +30,9 @@ namespace bitc { BlockSizeWidth = 32 // BlockSize up to 2^32 32-bit words = 32GB per block. }; - // The standard code namespace always has a way to exit a block, enter a + // The standard abbrev namespace always has a way to exit a block, enter a // nested block, define abbrevs, and define an unabbreviated record. - enum FixedCodes { + enum FixedAbbrevIDs { END_BLOCK = 0, // Must be zero to guarantee termination for broken bitcode. ENTER_SUBBLOCK = 1, @@ -48,8 +48,29 @@ namespace bitc { UNABBREV_RECORD = 3, // This is not a code, this is a marker for the first abbrev assignment. - FIRST_ABBREV = 4 + FIRST_APPLICATION_ABBREV = 4 }; + + /// StandardBlockIDs - All bitcode files can optionally include a BLOCKINFO + /// block, which contains metadata about other blocks in the file. + enum StandardBlockIDs { + /// BLOCKINFO_BLOCK is used to define metadata about blocks, for example, + /// standard abbrevs that should be available to all blocks of a specified + /// ID. + BLOCKINFO_BLOCK_ID = 0, + + // Block IDs 1-7 are reserved for future expansion. + FIRST_APPLICATION_BLOCKID = 8 + }; + + /// BlockInfoCodes - The blockinfo block contains metadata about user-defined + /// blocks. + enum BlockInfoCodes { + BLOCKINFO_CODE_SETBID = 1, // SETBID: [blockid#] + BLOCKINFO_CODE_ABBREV = 2 // ABBREV: [standard abbrev encoding] + // BLOCKNAME: give string name to block, if desired. + }; + } // End bitc namespace /// BitCodeAbbrevOp - This describes one or more operands in an abbreviation. @@ -63,7 +84,7 @@ class BitCodeAbbrevOp { unsigned Enc : 3; // The encoding to use. public: enum Encoding { - FixedWidth = 1, // A fixed with field, Val specifies number of bits. + FixedWidth = 1, // A fixed with field, Val specifies number of bits. VBR = 2 // A VBR field where Val specifies the width of each chunk. }; @@ -87,6 +108,9 @@ public: } }; +/// BitCodeAbbrev - This class represents an abbreviation record. An +/// abbreviation allows a complex record that has redundancy to be stored in a +/// specialized format instead of the fully-general, fully-vbr, format. class BitCodeAbbrev { SmallVector OperandList; unsigned char RefCount; // Number of things using this. diff --git a/include/llvm/Bitcode/BitstreamReader.h b/include/llvm/Bitcode/BitstreamReader.h index bff4e537fd9..eac9ab0b607 100644 --- a/include/llvm/Bitcode/BitstreamReader.h +++ b/include/llvm/Bitcode/BitstreamReader.h @@ -283,7 +283,7 @@ public: return Code; } - unsigned AbbrevNo = AbbrevID-bitc::FIRST_ABBREV; + unsigned AbbrevNo = AbbrevID-bitc::FIRST_APPLICATION_ABBREV; assert(AbbrevNo < CurAbbrevs.size() && "Invalid abbrev #!"); BitCodeAbbrev *Abbv = CurAbbrevs[AbbrevNo]; diff --git a/include/llvm/Bitcode/BitstreamWriter.h b/include/llvm/Bitcode/BitstreamWriter.h index 808fa527e05..fcbcbbf0fb4 100644 --- a/include/llvm/Bitcode/BitstreamWriter.h +++ b/include/llvm/Bitcode/BitstreamWriter.h @@ -194,7 +194,7 @@ public: void EmitRecord(unsigned Code, SmallVectorImpl &Vals, unsigned Abbrev = 0) { if (Abbrev) { - unsigned AbbrevNo = Abbrev-bitc::FIRST_ABBREV; + unsigned AbbrevNo = Abbrev-bitc::FIRST_APPLICATION_ABBREV; assert(AbbrevNo < CurAbbrevs.size() && "Invalid abbrev #!"); BitCodeAbbrev *Abbv = CurAbbrevs[AbbrevNo]; @@ -247,7 +247,7 @@ public: void EmitRecord(unsigned Code, SmallVectorImpl &Vals, unsigned Abbrev = 0) { if (Abbrev) { - unsigned AbbrevNo = Abbrev-bitc::FIRST_ABBREV; + unsigned AbbrevNo = Abbrev-bitc::FIRST_APPLICATION_ABBREV; assert(AbbrevNo < CurAbbrevs.size() && "Invalid abbrev #!"); BitCodeAbbrev *Abbv = CurAbbrevs[AbbrevNo]; @@ -318,7 +318,7 @@ public: } CurAbbrevs.push_back(Abbv); - return CurAbbrevs.size()-1+bitc::FIRST_ABBREV; + return CurAbbrevs.size()-1+bitc::FIRST_APPLICATION_ABBREV; } }; diff --git a/include/llvm/Bitcode/LLVMBitCodes.h b/include/llvm/Bitcode/LLVMBitCodes.h index 40a9a2dfdc0..1ce411b0c0a 100644 --- a/include/llvm/Bitcode/LLVMBitCodes.h +++ b/include/llvm/Bitcode/LLVMBitCodes.h @@ -25,15 +25,15 @@ namespace bitc { // The only top-level block type defined is for a module. enum BlockIDs { // Blocks - MODULE_BLOCK_ID = 0, + MODULE_BLOCK_ID = FIRST_APPLICATION_BLOCKID, - // Module sub-block id's - PARAMATTR_BLOCK_ID = 1, - TYPE_BLOCK_ID = 2, - CONSTANTS_BLOCK_ID = 3, - FUNCTION_BLOCK_ID = 4, - TYPE_SYMTAB_BLOCK_ID = 5, - VALUE_SYMTAB_BLOCK_ID = 6 + // Module sub-block id's. + PARAMATTR_BLOCK_ID, + TYPE_BLOCK_ID, + CONSTANTS_BLOCK_ID, + FUNCTION_BLOCK_ID, + TYPE_SYMTAB_BLOCK_ID, + VALUE_SYMTAB_BLOCK_ID }; @@ -68,7 +68,7 @@ namespace bitc { /// TYPE blocks have codes for each type primitive they use. enum TypeCodes { - TYPE_CODE_NUMENTRY = 1, // TYPE_CODE_NUMENTRY: [numentries] + TYPE_CODE_NUMENTRY = 1, // NUMENTRY: [numentries] // Type Codes TYPE_CODE_VOID = 2, // VOID