@@ -236,6 +236,7 @@ BlockIdNameMap = []()
236236 {BI_NAMESPACE_BLOCK_ID, " NamespaceBlock" },
237237 {BI_ENUM_BLOCK_ID, " EnumBlock" },
238238 {BI_EXPR_BLOCK_ID, " ExprBlock" },
239+ {BI_BITFIELD_WIDTH_BLOCK_ID, " BitfieldWidthBlock" },
239240 {BI_TYPEDEF_BLOCK_ID, " TypedefBlock" },
240241 {BI_TYPEINFO_BLOCK_ID, " TypeInfoBlock" },
241242 {BI_TYPEINFO_PARENT_BLOCK_ID, " TypeInfoParentBlock" },
@@ -374,6 +375,8 @@ RecordsByBlock{
374375 // ExprInfo and ConstantExprInfo
375376 {BI_EXPR_BLOCK_ID,
376377 {EXPR_WRITTEN, EXPR_VALUE}},
378+ {BI_BITFIELD_WIDTH_BLOCK_ID,
379+ {}},
377380 // FieldInfo
378381 {BI_FIELD_BLOCK_ID,
379382 {FIELD_DEFAULT, FIELD_ATTRIBUTES,
@@ -854,11 +857,11 @@ emitBlock(
854857 emitInfoPart (F);
855858 emitSourceInfo (F);
856859 emitBlock (F.Type );
857- emitRecord (F.Default , FIELD_DEFAULT );
860+ emitBlock (F.Default );
858861 emitRecord ({F.specs .raw }, FIELD_ATTRIBUTES);
859862 emitRecord (F.IsMutable , FIELD_IS_MUTABLE);
860863 emitRecord (F.IsBitfield , FIELD_IS_BITFIELD);
861- emitBlock (F.BitfieldWidth );
864+ emitBlock (F.BitfieldWidth , BI_BITFIELD_WIDTH_BLOCK_ID );
862865}
863866
864867void
@@ -968,6 +971,18 @@ emitBlock(
968971 }
969972}
970973
974+ template <typename ExprInfoTy>
975+ requires std::derived_from<ExprInfoTy, ExprInfo>
976+ void
977+ BitcodeWriter::
978+ emitBlock (
979+ ExprInfoTy const & E,
980+ BlockID ID)
981+ {
982+ StreamSubBlockGuard Block (Stream, ID);
983+ emitBlock (E);
984+ }
985+
971986void
972987BitcodeWriter::
973988emitBlock (
@@ -1226,6 +1241,7 @@ emitBlock(
12261241 if (I.Template )
12271242 emitBlock (*I.Template );
12281243 emitBlock (I.Type );
1244+ emitBlock (I.Initializer );
12291245 emitRecord ({I.specs .raw }, VARIABLE_BITS);
12301246}
12311247
0 commit comments