| ... | @@ -526,7 +526,7 @@ pub const DeclState = struct { | ... | @@ -526,7 +526,7 @@ pub const DeclState = struct { |
| 526 | .ErrorUnion => { | 526 | .ErrorUnion => { |
| 527 | const error_ty = ty.errorUnionSet(); | 527 | const error_ty = ty.errorUnionSet(); |
| 528 | const payload_ty = ty.errorUnionPayload(); | 528 | const payload_ty = ty.errorUnionPayload(); |
| 529 | const payload_align = payload_ty.abiAlignment(target); | 529 | const payload_align = if (payload_ty.isNoReturn()) 0 else payload_ty.abiAlignment(target); |
| 530 | const error_align = Type.anyerror.abiAlignment(target); | 530 | const error_align = Type.anyerror.abiAlignment(target); |
| 531 | const abi_size = ty.abiSize(target); | 531 | const abi_size = ty.abiSize(target); |
| 532 | const payload_off = if (error_align >= payload_align) Type.anyerror.abiSize(target) else 0; | 532 | const payload_off = if (error_align >= payload_align) Type.anyerror.abiSize(target) else 0; |
| ... | @@ -540,31 +540,35 @@ pub const DeclState = struct { | ... | @@ -540,31 +540,35 @@ pub const DeclState = struct { |
| 540 | const name = try ty.nameAllocArena(arena, module); | 540 | const name = try ty.nameAllocArena(arena, module); |
| 541 | try dbg_info_buffer.writer().print("{s}\x00", .{name}); | 541 | try dbg_info_buffer.writer().print("{s}\x00", .{name}); |
| 542 | | 542 | |
| 543 | // DW.AT.member | 543 | if (!payload_ty.isNoReturn()) { |
| 544 | try dbg_info_buffer.ensureUnusedCapacity(7); | 544 | // DW.AT.member |
| 545 | dbg_info_buffer.appendAssumeCapacity(@enumToInt(AbbrevKind.struct_member)); | 545 | try dbg_info_buffer.ensureUnusedCapacity(7); |
| 546 | // DW.AT.name, DW.FORM.string | 546 | dbg_info_buffer.appendAssumeCapacity(@enumToInt(AbbrevKind.struct_member)); |
| 547 | dbg_info_buffer.appendSliceAssumeCapacity("value"); | 547 | // DW.AT.name, DW.FORM.string |
| 548 | dbg_info_buffer.appendAssumeCapacity(0); | 548 | dbg_info_buffer.appendSliceAssumeCapacity("value"); |
| 549 | // DW.AT.type, DW.FORM.ref4 | 549 | dbg_info_buffer.appendAssumeCapacity(0); |
| 550 | var index = dbg_info_buffer.items.len; | 550 | // DW.AT.type, DW.FORM.ref4 |
| 551 | try dbg_info_buffer.resize(index + 4); | 551 | const index = dbg_info_buffer.items.len; |
| 552 | try self.addTypeRelocGlobal(atom_index, payload_ty, @intCast(u32, index)); | 552 | try dbg_info_buffer.resize(index + 4); |
| 553 | // DW.AT.data_member_location, DW.FORM.sdata | 553 | try self.addTypeRelocGlobal(atom_index, payload_ty, @intCast(u32, index)); |
| 554 | try leb128.writeULEB128(dbg_info_buffer.writer(), payload_off); | 554 | // DW.AT.data_member_location, DW.FORM.sdata |
| | 555 | try leb128.writeULEB128(dbg_info_buffer.writer(), payload_off); |
| | 556 | } |
| 555 | | 557 | |
| 556 | // DW.AT.member | 558 | { |
| 557 | try dbg_info_buffer.ensureUnusedCapacity(5); | 559 | // DW.AT.member |
| 558 | dbg_info_buffer.appendAssumeCapacity(@enumToInt(AbbrevKind.struct_member)); | 560 | try dbg_info_buffer.ensureUnusedCapacity(5); |
| 559 | // DW.AT.name, DW.FORM.string | 561 | dbg_info_buffer.appendAssumeCapacity(@enumToInt(AbbrevKind.struct_member)); |
| 560 | dbg_info_buffer.appendSliceAssumeCapacity("err"); | 562 | // DW.AT.name, DW.FORM.string |
| 561 | dbg_info_buffer.appendAssumeCapacity(0); | 563 | dbg_info_buffer.appendSliceAssumeCapacity("err"); |
| 562 | // DW.AT.type, DW.FORM.ref4 | 564 | dbg_info_buffer.appendAssumeCapacity(0); |
| 563 | index = dbg_info_buffer.items.len; | 565 | // DW.AT.type, DW.FORM.ref4 |
| 564 | try dbg_info_buffer.resize(index + 4); | 566 | const index = dbg_info_buffer.items.len; |
| 565 | try self.addTypeRelocGlobal(atom_index, error_ty, @intCast(u32, index)); | 567 | try dbg_info_buffer.resize(index + 4); |
| 566 | // DW.AT.data_member_location, DW.FORM.sdata | 568 | try self.addTypeRelocGlobal(atom_index, error_ty, @intCast(u32, index)); |
| 567 | try leb128.writeULEB128(dbg_info_buffer.writer(), error_off); | 569 | // DW.AT.data_member_location, DW.FORM.sdata |
| | 570 | try leb128.writeULEB128(dbg_info_buffer.writer(), error_off); |
| | 571 | } |
| 568 | | 572 | |
| 569 | // DW.AT.structure_type delimit children | 573 | // DW.AT.structure_type delimit children |
| 570 | try dbg_info_buffer.append(0); | 574 | try dbg_info_buffer.append(0); |