[Bitcode] Extract common BitCodeAbbrevOps (NFC)
We always use the same abbreviations for type and for value references, so avoid repeating them.
This commit is contained in:
parent
b1774222c7
commit
d74d4ffa33
@ -3853,6 +3853,12 @@ void ModuleBitcodeWriter::writeBlockInfo() {
|
||||
// Other blocks can define their abbrevs inline.
|
||||
Stream.EnterBlockInfoBlock();
|
||||
|
||||
// Encode type indices using fixed size based on number of types.
|
||||
BitCodeAbbrevOp TypeAbbrevOp(BitCodeAbbrevOp::Fixed,
|
||||
VE.computeBitsRequiredForTypeIndices());
|
||||
// Encode value indices as 6-bit VBR.
|
||||
BitCodeAbbrevOp ValAbbrevOp(BitCodeAbbrevOp::VBR, 6);
|
||||
|
||||
{ // 8-bit fixed-width VST_CODE_ENTRY/VST_CODE_BBENTRY strings.
|
||||
auto Abbv = std::make_shared<BitCodeAbbrev>();
|
||||
Abbv->Add(BitCodeAbbrevOp(BitCodeAbbrevOp::Fixed, 3));
|
||||
@ -3898,8 +3904,7 @@ void ModuleBitcodeWriter::writeBlockInfo() {
|
||||
{ // SETTYPE abbrev for CONSTANTS_BLOCK.
|
||||
auto Abbv = std::make_shared<BitCodeAbbrev>();
|
||||
Abbv->Add(BitCodeAbbrevOp(bitc::CST_CODE_SETTYPE));
|
||||
Abbv->Add(BitCodeAbbrevOp(BitCodeAbbrevOp::Fixed,
|
||||
VE.computeBitsRequiredForTypeIndices()));
|
||||
Abbv->Add(TypeAbbrevOp);
|
||||
if (Stream.EmitBlockInfoAbbrev(bitc::CONSTANTS_BLOCK_ID, Abbv) !=
|
||||
CONSTANTS_SETTYPE_ABBREV)
|
||||
llvm_unreachable("Unexpected abbrev ordering!");
|
||||
@ -3939,9 +3944,8 @@ void ModuleBitcodeWriter::writeBlockInfo() {
|
||||
{ // INST_LOAD abbrev for FUNCTION_BLOCK.
|
||||
auto Abbv = std::make_shared<BitCodeAbbrev>();
|
||||
Abbv->Add(BitCodeAbbrevOp(bitc::FUNC_CODE_INST_LOAD));
|
||||
Abbv->Add(BitCodeAbbrevOp(BitCodeAbbrevOp::VBR, 6)); // Ptr
|
||||
Abbv->Add(BitCodeAbbrevOp(BitCodeAbbrevOp::Fixed, // dest ty
|
||||
VE.computeBitsRequiredForTypeIndices()));
|
||||
Abbv->Add(ValAbbrevOp); // Ptr
|
||||
Abbv->Add(TypeAbbrevOp); // dest ty
|
||||
Abbv->Add(BitCodeAbbrevOp(BitCodeAbbrevOp::VBR, 4)); // Align
|
||||
Abbv->Add(BitCodeAbbrevOp(BitCodeAbbrevOp::Fixed, 1)); // volatile
|
||||
if (Stream.EmitBlockInfoAbbrev(bitc::FUNCTION_BLOCK_ID, Abbv) !=
|
||||
@ -3951,7 +3955,7 @@ void ModuleBitcodeWriter::writeBlockInfo() {
|
||||
{ // INST_UNOP abbrev for FUNCTION_BLOCK.
|
||||
auto Abbv = std::make_shared<BitCodeAbbrev>();
|
||||
Abbv->Add(BitCodeAbbrevOp(bitc::FUNC_CODE_INST_UNOP));
|
||||
Abbv->Add(BitCodeAbbrevOp(BitCodeAbbrevOp::VBR, 6)); // LHS
|
||||
Abbv->Add(ValAbbrevOp); // LHS
|
||||
Abbv->Add(BitCodeAbbrevOp(BitCodeAbbrevOp::Fixed, 4)); // opc
|
||||
if (Stream.EmitBlockInfoAbbrev(bitc::FUNCTION_BLOCK_ID, Abbv) !=
|
||||
FUNCTION_INST_UNOP_ABBREV)
|
||||
@ -3960,7 +3964,7 @@ void ModuleBitcodeWriter::writeBlockInfo() {
|
||||
{ // INST_UNOP_FLAGS abbrev for FUNCTION_BLOCK.
|
||||
auto Abbv = std::make_shared<BitCodeAbbrev>();
|
||||
Abbv->Add(BitCodeAbbrevOp(bitc::FUNC_CODE_INST_UNOP));
|
||||
Abbv->Add(BitCodeAbbrevOp(BitCodeAbbrevOp::VBR, 6)); // LHS
|
||||
Abbv->Add(ValAbbrevOp); // LHS
|
||||
Abbv->Add(BitCodeAbbrevOp(BitCodeAbbrevOp::Fixed, 4)); // opc
|
||||
Abbv->Add(BitCodeAbbrevOp(BitCodeAbbrevOp::Fixed, 8)); // flags
|
||||
if (Stream.EmitBlockInfoAbbrev(bitc::FUNCTION_BLOCK_ID, Abbv) !=
|
||||
@ -3970,8 +3974,8 @@ void ModuleBitcodeWriter::writeBlockInfo() {
|
||||
{ // INST_BINOP abbrev for FUNCTION_BLOCK.
|
||||
auto Abbv = std::make_shared<BitCodeAbbrev>();
|
||||
Abbv->Add(BitCodeAbbrevOp(bitc::FUNC_CODE_INST_BINOP));
|
||||
Abbv->Add(BitCodeAbbrevOp(BitCodeAbbrevOp::VBR, 6)); // LHS
|
||||
Abbv->Add(BitCodeAbbrevOp(BitCodeAbbrevOp::VBR, 6)); // RHS
|
||||
Abbv->Add(ValAbbrevOp); // LHS
|
||||
Abbv->Add(ValAbbrevOp); // RHS
|
||||
Abbv->Add(BitCodeAbbrevOp(BitCodeAbbrevOp::Fixed, 4)); // opc
|
||||
if (Stream.EmitBlockInfoAbbrev(bitc::FUNCTION_BLOCK_ID, Abbv) !=
|
||||
FUNCTION_INST_BINOP_ABBREV)
|
||||
@ -3980,8 +3984,8 @@ void ModuleBitcodeWriter::writeBlockInfo() {
|
||||
{ // INST_BINOP_FLAGS abbrev for FUNCTION_BLOCK.
|
||||
auto Abbv = std::make_shared<BitCodeAbbrev>();
|
||||
Abbv->Add(BitCodeAbbrevOp(bitc::FUNC_CODE_INST_BINOP));
|
||||
Abbv->Add(BitCodeAbbrevOp(BitCodeAbbrevOp::VBR, 6)); // LHS
|
||||
Abbv->Add(BitCodeAbbrevOp(BitCodeAbbrevOp::VBR, 6)); // RHS
|
||||
Abbv->Add(ValAbbrevOp); // LHS
|
||||
Abbv->Add(ValAbbrevOp); // RHS
|
||||
Abbv->Add(BitCodeAbbrevOp(BitCodeAbbrevOp::Fixed, 4)); // opc
|
||||
Abbv->Add(BitCodeAbbrevOp(BitCodeAbbrevOp::Fixed, 8)); // flags
|
||||
if (Stream.EmitBlockInfoAbbrev(bitc::FUNCTION_BLOCK_ID, Abbv) !=
|
||||
@ -3991,10 +3995,9 @@ void ModuleBitcodeWriter::writeBlockInfo() {
|
||||
{ // INST_CAST abbrev for FUNCTION_BLOCK.
|
||||
auto Abbv = std::make_shared<BitCodeAbbrev>();
|
||||
Abbv->Add(BitCodeAbbrevOp(bitc::FUNC_CODE_INST_CAST));
|
||||
Abbv->Add(BitCodeAbbrevOp(BitCodeAbbrevOp::VBR, 6)); // OpVal
|
||||
Abbv->Add(BitCodeAbbrevOp(BitCodeAbbrevOp::Fixed, // dest ty
|
||||
VE.computeBitsRequiredForTypeIndices()));
|
||||
Abbv->Add(BitCodeAbbrevOp(BitCodeAbbrevOp::Fixed, 4)); // opc
|
||||
Abbv->Add(ValAbbrevOp); // OpVal
|
||||
Abbv->Add(TypeAbbrevOp); // dest ty
|
||||
Abbv->Add(BitCodeAbbrevOp(BitCodeAbbrevOp::Fixed, 4)); // opc
|
||||
if (Stream.EmitBlockInfoAbbrev(bitc::FUNCTION_BLOCK_ID, Abbv) !=
|
||||
FUNCTION_INST_CAST_ABBREV)
|
||||
llvm_unreachable("Unexpected abbrev ordering!");
|
||||
@ -4002,9 +4005,8 @@ void ModuleBitcodeWriter::writeBlockInfo() {
|
||||
{ // INST_CAST_FLAGS abbrev for FUNCTION_BLOCK.
|
||||
auto Abbv = std::make_shared<BitCodeAbbrev>();
|
||||
Abbv->Add(BitCodeAbbrevOp(bitc::FUNC_CODE_INST_CAST));
|
||||
Abbv->Add(BitCodeAbbrevOp(BitCodeAbbrevOp::VBR, 6)); // OpVal
|
||||
Abbv->Add(BitCodeAbbrevOp(BitCodeAbbrevOp::Fixed, // dest ty
|
||||
VE.computeBitsRequiredForTypeIndices()));
|
||||
Abbv->Add(ValAbbrevOp); // OpVal
|
||||
Abbv->Add(TypeAbbrevOp); // dest ty
|
||||
Abbv->Add(BitCodeAbbrevOp(BitCodeAbbrevOp::Fixed, 4)); // opc
|
||||
Abbv->Add(BitCodeAbbrevOp(BitCodeAbbrevOp::Fixed, 8)); // flags
|
||||
if (Stream.EmitBlockInfoAbbrev(bitc::FUNCTION_BLOCK_ID, Abbv) !=
|
||||
@ -4022,7 +4024,7 @@ void ModuleBitcodeWriter::writeBlockInfo() {
|
||||
{ // INST_RET abbrev for FUNCTION_BLOCK.
|
||||
auto Abbv = std::make_shared<BitCodeAbbrev>();
|
||||
Abbv->Add(BitCodeAbbrevOp(bitc::FUNC_CODE_INST_RET));
|
||||
Abbv->Add(BitCodeAbbrevOp(BitCodeAbbrevOp::VBR, 6)); // ValID
|
||||
Abbv->Add(ValAbbrevOp);
|
||||
if (Stream.EmitBlockInfoAbbrev(bitc::FUNCTION_BLOCK_ID, Abbv) !=
|
||||
FUNCTION_INST_RET_VAL_ABBREV)
|
||||
llvm_unreachable("Unexpected abbrev ordering!");
|
||||
@ -4037,11 +4039,10 @@ void ModuleBitcodeWriter::writeBlockInfo() {
|
||||
{
|
||||
auto Abbv = std::make_shared<BitCodeAbbrev>();
|
||||
Abbv->Add(BitCodeAbbrevOp(bitc::FUNC_CODE_INST_GEP));
|
||||
Abbv->Add(BitCodeAbbrevOp(BitCodeAbbrevOp::Fixed, 3));
|
||||
Abbv->Add(BitCodeAbbrevOp(BitCodeAbbrevOp::Fixed, // dest ty
|
||||
Log2_32_Ceil(VE.getTypes().size() + 1)));
|
||||
Abbv->Add(BitCodeAbbrevOp(BitCodeAbbrevOp::Fixed, 3)); // flags
|
||||
Abbv->Add(TypeAbbrevOp); // dest ty
|
||||
Abbv->Add(BitCodeAbbrevOp(BitCodeAbbrevOp::Array));
|
||||
Abbv->Add(BitCodeAbbrevOp(BitCodeAbbrevOp::VBR, 6));
|
||||
Abbv->Add(ValAbbrevOp);
|
||||
if (Stream.EmitBlockInfoAbbrev(bitc::FUNCTION_BLOCK_ID, Abbv) !=
|
||||
FUNCTION_INST_GEP_ABBREV)
|
||||
llvm_unreachable("Unexpected abbrev ordering!");
|
||||
@ -4052,7 +4053,7 @@ void ModuleBitcodeWriter::writeBlockInfo() {
|
||||
Abbv->Add(BitCodeAbbrevOp(BitCodeAbbrevOp::VBR, 7)); // dbgloc
|
||||
Abbv->Add(BitCodeAbbrevOp(BitCodeAbbrevOp::VBR, 7)); // var
|
||||
Abbv->Add(BitCodeAbbrevOp(BitCodeAbbrevOp::VBR, 7)); // expr
|
||||
Abbv->Add(BitCodeAbbrevOp(BitCodeAbbrevOp::VBR, 6)); // val
|
||||
Abbv->Add(ValAbbrevOp); // val
|
||||
if (Stream.EmitBlockInfoAbbrev(bitc::FUNCTION_BLOCK_ID, Abbv) !=
|
||||
FUNCTION_DEBUG_RECORD_VALUE_ABBREV)
|
||||
llvm_unreachable("Unexpected abbrev ordering! 1");
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user