diff options
| author | Jacob Young <jacobly0@users.noreply.github.com> | 2025-06-07 04:51:26 -0400 |
|---|---|---|
| committer | mlugg <mlugg@mlugg.co.uk> | 2025-06-12 13:55:41 +0100 |
| commit | c95b1bf2d3c3ae7595e15ad521952b77d5063801 (patch) | |
| tree | a1260ddf1454688e6732a22a6e3c4cc60bd81986 /src/Type.zig | |
| parent | c4ec382fc806e0cb4484c1cb2edcc5fc40c3c9d8 (diff) | |
| download | zig-c95b1bf2d3c3ae7595e15ad521952b77d5063801.tar.gz zig-c95b1bf2d3c3ae7595e15ad521952b77d5063801.zip | |
x86_64: remove air references from mir
Diffstat (limited to 'src/Type.zig')
| -rw-r--r-- | src/Type.zig | 24 |
1 files changed, 13 insertions, 11 deletions
diff --git a/src/Type.zig b/src/Type.zig index 00f1c70129..64b389cf5f 100644 --- a/src/Type.zig +++ b/src/Type.zig @@ -177,6 +177,7 @@ pub fn print(ty: Type, writer: anytype, pt: Zcu.PerThread) @TypeOf(writer).Error const zcu = pt.zcu; const ip = &zcu.intern_pool; switch (ip.indexToKey(ty.toIntern())) { + .undef => return writer.writeAll("@as(type, undefined)"), .int_type => |int_type| { const sign_char: u8 = switch (int_type.signedness) { .signed => 'i', @@ -398,7 +399,6 @@ pub fn print(ty: Type, writer: anytype, pt: Zcu.PerThread) @TypeOf(writer).Error }, // values, not types - .undef, .simple_value, .variable, .@"extern", @@ -3921,23 +3921,25 @@ pub fn getUnionLayout(loaded_union: InternPool.LoadedUnionType, zcu: *const Zcu) var payload_size: u64 = 0; var payload_align: InternPool.Alignment = .@"1"; for (loaded_union.field_types.get(ip), 0..) |field_ty, field_index| { - if (!Type.fromInterned(field_ty).hasRuntimeBitsIgnoreComptime(zcu)) continue; + if (Type.fromInterned(field_ty).isNoReturn(zcu)) continue; const explicit_align = loaded_union.fieldAlign(ip, field_index); const field_align = if (explicit_align != .none) explicit_align else Type.fromInterned(field_ty).abiAlignment(zcu); - const field_size = Type.fromInterned(field_ty).abiSize(zcu); - if (field_size > payload_size) { - payload_size = field_size; - biggest_field = @intCast(field_index); - } - if (field_align.compare(.gte, payload_align)) { - payload_align = field_align; - most_aligned_field = @intCast(field_index); - most_aligned_field_size = field_size; + if (Type.fromInterned(field_ty).hasRuntimeBits(zcu)) { + const field_size = Type.fromInterned(field_ty).abiSize(zcu); + if (field_size > payload_size) { + payload_size = field_size; + biggest_field = @intCast(field_index); + } + if (field_align.compare(.gte, payload_align)) { + most_aligned_field = @intCast(field_index); + most_aligned_field_size = field_size; + } } + payload_align = payload_align.max(field_align); } const have_tag = loaded_union.flagsUnordered(ip).runtime_tag.hasTag(); if (!have_tag or !Type.fromInterned(loaded_union.enum_tag_ty).hasRuntimeBits(zcu)) { |
