diff options
author | Chris Lattner <sabre@nondot.org> | 2007-05-04 18:25:49 +0000 |
---|---|---|
committer | Chris Lattner <sabre@nondot.org> | 2007-05-04 18:25:49 +0000 |
commit | a727d5502c8e23c090da658bf14c5ebc1169a070 (patch) | |
tree | 2dfccabab80d432366535edf8b3cd953de9c1d2e /include/llvm/Bitcode/BitCodes.h | |
parent | 299b2d2070165eccea3fb61f7387fa016b847338 (diff) |
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
Diffstat (limited to 'include/llvm/Bitcode/BitCodes.h')
-rw-r--r-- | include/llvm/Bitcode/BitCodes.h | 32 |
1 files changed, 28 insertions, 4 deletions
diff --git a/include/llvm/Bitcode/BitCodes.h b/include/llvm/Bitcode/BitCodes.h index 15a7a4943d..647c28fb39 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<BitCodeAbbrevOp, 8> OperandList; unsigned char RefCount; // Number of things using this. |