| ... | ... | @@ -13739,6 +13739,25 @@ pub fn toBitcode(self: *Builder, allocator: Allocator) bitcode_writer.Error![]co |
| 13739 | 13739 | try constants_block.end(); |
| 13740 | 13740 | } |
| 13741 | 13741 | |
| 13742 | const MetadataKind = enum(u8) { |
| 13743 | dbg = 0, |
| 13744 | }; |
| 13745 | |
| 13746 | // METADATA_KIND_BLOCK |
| 13747 | if (!self.strip) { |
| 13748 | const MetadataKindBlock = ir.MetadataKindBlock; |
| 13749 | var metadata_kind_block = try module_block.enterSubBlock(MetadataKindBlock); |
| 13750 | |
| 13751 | inline for (@typeInfo(MetadataKind).Enum.fields) |field| { |
| 13752 | try metadata_kind_block.writeAbbrev(MetadataKindBlock.Kind{ |
| 13753 | .id = field.value, |
| 13754 | .name = field.name, |
| 13755 | }); |
| 13756 | } |
| 13757 | |
| 13758 | try metadata_kind_block.end(); |
| 13759 | } |
| 13760 | |
| 13742 | 13761 | const MetadataAdapter = struct { |
| 13743 | 13762 | builder: *const Builder, |
| 13744 | 13763 | constant_adapter: ConstantAdapter, |
| ... | ... | @@ -14766,6 +14785,23 @@ pub fn toBitcode(self: *Builder, allocator: Allocator) bitcode_writer.Error![]co |
| 14766 | 14785 | try value_symtab_block.end(); |
| 14767 | 14786 | } |
| 14768 | 14787 | |
| 14788 | // METADATA_ATTACHMENT_BLOCK |
| 14789 | if (!self.strip) blk: { |
| 14790 | const dbg = func.global.ptrConst(self).dbg; |
| 14791 | |
| 14792 | if (dbg == .none) break :blk; |
| 14793 | |
| 14794 | const MetadataAttachmentBlock = ir.MetadataAttachmentBlock; |
| 14795 | var metadata_attach_block = try function_block.enterSubBlock(MetadataAttachmentBlock); |
| 14796 | |
| 14797 | try metadata_attach_block.writeAbbrev(MetadataAttachmentBlock.AttachmentSingle{ |
| 14798 | .id = @intFromEnum(MetadataKind.dbg), |
| 14799 | .metadata = @enumFromInt(metadata_adapter.getMetadataIndex(dbg) - 1), |
| 14800 | }); |
| 14801 | |
| 14802 | try metadata_attach_block.end(); |
| 14803 | } |
| 14804 | |
| 14769 | 14805 | try function_block.end(); |
| 14770 | 14806 | } |
| 14771 | 14807 | } |