mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2025-05-20 20:38:48 +00:00
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
This commit is contained in:
parent
299b2d2070
commit
a727d5502c
@ -30,9 +30,9 @@ namespace bitc {
|
|||||||
BlockSizeWidth = 32 // BlockSize up to 2^32 32-bit words = 32GB per block.
|
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.
|
// 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.
|
END_BLOCK = 0, // Must be zero to guarantee termination for broken bitcode.
|
||||||
ENTER_SUBBLOCK = 1,
|
ENTER_SUBBLOCK = 1,
|
||||||
|
|
||||||
@ -48,8 +48,29 @@ namespace bitc {
|
|||||||
UNABBREV_RECORD = 3,
|
UNABBREV_RECORD = 3,
|
||||||
|
|
||||||
// This is not a code, this is a marker for the first abbrev assignment.
|
// 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
|
} // End bitc namespace
|
||||||
|
|
||||||
/// BitCodeAbbrevOp - This describes one or more operands in an abbreviation.
|
/// BitCodeAbbrevOp - This describes one or more operands in an abbreviation.
|
||||||
@ -63,7 +84,7 @@ class BitCodeAbbrevOp {
|
|||||||
unsigned Enc : 3; // The encoding to use.
|
unsigned Enc : 3; // The encoding to use.
|
||||||
public:
|
public:
|
||||||
enum Encoding {
|
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.
|
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 {
|
class BitCodeAbbrev {
|
||||||
SmallVector<BitCodeAbbrevOp, 8> OperandList;
|
SmallVector<BitCodeAbbrevOp, 8> OperandList;
|
||||||
unsigned char RefCount; // Number of things using this.
|
unsigned char RefCount; // Number of things using this.
|
||||||
|
@ -283,7 +283,7 @@ public:
|
|||||||
return Code;
|
return Code;
|
||||||
}
|
}
|
||||||
|
|
||||||
unsigned AbbrevNo = AbbrevID-bitc::FIRST_ABBREV;
|
unsigned AbbrevNo = AbbrevID-bitc::FIRST_APPLICATION_ABBREV;
|
||||||
assert(AbbrevNo < CurAbbrevs.size() && "Invalid abbrev #!");
|
assert(AbbrevNo < CurAbbrevs.size() && "Invalid abbrev #!");
|
||||||
BitCodeAbbrev *Abbv = CurAbbrevs[AbbrevNo];
|
BitCodeAbbrev *Abbv = CurAbbrevs[AbbrevNo];
|
||||||
|
|
||||||
|
@ -194,7 +194,7 @@ public:
|
|||||||
void EmitRecord(unsigned Code, SmallVectorImpl<uint64_t> &Vals,
|
void EmitRecord(unsigned Code, SmallVectorImpl<uint64_t> &Vals,
|
||||||
unsigned Abbrev = 0) {
|
unsigned Abbrev = 0) {
|
||||||
if (Abbrev) {
|
if (Abbrev) {
|
||||||
unsigned AbbrevNo = Abbrev-bitc::FIRST_ABBREV;
|
unsigned AbbrevNo = Abbrev-bitc::FIRST_APPLICATION_ABBREV;
|
||||||
assert(AbbrevNo < CurAbbrevs.size() && "Invalid abbrev #!");
|
assert(AbbrevNo < CurAbbrevs.size() && "Invalid abbrev #!");
|
||||||
BitCodeAbbrev *Abbv = CurAbbrevs[AbbrevNo];
|
BitCodeAbbrev *Abbv = CurAbbrevs[AbbrevNo];
|
||||||
|
|
||||||
@ -247,7 +247,7 @@ public:
|
|||||||
void EmitRecord(unsigned Code, SmallVectorImpl<unsigned> &Vals,
|
void EmitRecord(unsigned Code, SmallVectorImpl<unsigned> &Vals,
|
||||||
unsigned Abbrev = 0) {
|
unsigned Abbrev = 0) {
|
||||||
if (Abbrev) {
|
if (Abbrev) {
|
||||||
unsigned AbbrevNo = Abbrev-bitc::FIRST_ABBREV;
|
unsigned AbbrevNo = Abbrev-bitc::FIRST_APPLICATION_ABBREV;
|
||||||
assert(AbbrevNo < CurAbbrevs.size() && "Invalid abbrev #!");
|
assert(AbbrevNo < CurAbbrevs.size() && "Invalid abbrev #!");
|
||||||
BitCodeAbbrev *Abbv = CurAbbrevs[AbbrevNo];
|
BitCodeAbbrev *Abbv = CurAbbrevs[AbbrevNo];
|
||||||
|
|
||||||
@ -318,7 +318,7 @@ public:
|
|||||||
}
|
}
|
||||||
|
|
||||||
CurAbbrevs.push_back(Abbv);
|
CurAbbrevs.push_back(Abbv);
|
||||||
return CurAbbrevs.size()-1+bitc::FIRST_ABBREV;
|
return CurAbbrevs.size()-1+bitc::FIRST_APPLICATION_ABBREV;
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -25,15 +25,15 @@ namespace bitc {
|
|||||||
// The only top-level block type defined is for a module.
|
// The only top-level block type defined is for a module.
|
||||||
enum BlockIDs {
|
enum BlockIDs {
|
||||||
// Blocks
|
// Blocks
|
||||||
MODULE_BLOCK_ID = 0,
|
MODULE_BLOCK_ID = FIRST_APPLICATION_BLOCKID,
|
||||||
|
|
||||||
// Module sub-block id's
|
// Module sub-block id's.
|
||||||
PARAMATTR_BLOCK_ID = 1,
|
PARAMATTR_BLOCK_ID,
|
||||||
TYPE_BLOCK_ID = 2,
|
TYPE_BLOCK_ID,
|
||||||
CONSTANTS_BLOCK_ID = 3,
|
CONSTANTS_BLOCK_ID,
|
||||||
FUNCTION_BLOCK_ID = 4,
|
FUNCTION_BLOCK_ID,
|
||||||
TYPE_SYMTAB_BLOCK_ID = 5,
|
TYPE_SYMTAB_BLOCK_ID,
|
||||||
VALUE_SYMTAB_BLOCK_ID = 6
|
VALUE_SYMTAB_BLOCK_ID
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
@ -68,7 +68,7 @@ namespace bitc {
|
|||||||
|
|
||||||
/// TYPE blocks have codes for each type primitive they use.
|
/// TYPE blocks have codes for each type primitive they use.
|
||||||
enum TypeCodes {
|
enum TypeCodes {
|
||||||
TYPE_CODE_NUMENTRY = 1, // TYPE_CODE_NUMENTRY: [numentries]
|
TYPE_CODE_NUMENTRY = 1, // NUMENTRY: [numentries]
|
||||||
|
|
||||||
// Type Codes
|
// Type Codes
|
||||||
TYPE_CODE_VOID = 2, // VOID
|
TYPE_CODE_VOID = 2, // VOID
|
||||||
|
Loading…
x
Reference in New Issue
Block a user