diff options
Diffstat (limited to 'src/codegen/llvm.zig')
| -rw-r--r-- | src/codegen/llvm.zig | 8 |
1 files changed, 4 insertions, 4 deletions
diff --git a/src/codegen/llvm.zig b/src/codegen/llvm.zig index 506c34af1d..abe4256a30 100644 --- a/src/codegen/llvm.zig +++ b/src/codegen/llvm.zig @@ -1966,7 +1966,7 @@ pub const Object = struct { for (tuple.types) |field_ty, i| { const field_val = tuple.values[i]; - if (field_val.tag() != .unreachable_value) continue; + if (field_val.tag() != .unreachable_value or !field_ty.hasRuntimeBits()) continue; const field_size = field_ty.abiSize(target); const field_align = field_ty.abiAlignment(target); @@ -2901,7 +2901,7 @@ pub const DeclGen = struct { for (tuple.types) |field_ty, i| { const field_val = tuple.values[i]; - if (field_val.tag() != .unreachable_value) continue; + if (field_val.tag() != .unreachable_value or !field_ty.hasRuntimeBits()) continue; const field_align = field_ty.abiAlignment(target); big_align = @max(big_align, field_align); @@ -10207,7 +10207,7 @@ fn llvmFieldIndex( const tuple = ty.tupleFields(); var llvm_field_index: c_uint = 0; for (tuple.types) |field_ty, i| { - if (tuple.values[i].tag() != .unreachable_value) continue; + if (tuple.values[i].tag() != .unreachable_value or !field_ty.hasRuntimeBits()) continue; const field_align = field_ty.abiAlignment(target); big_align = @max(big_align, field_align); @@ -10771,7 +10771,7 @@ fn isByRef(ty: Type) bool { const tuple = ty.tupleFields(); var count: usize = 0; for (tuple.values) |field_val, i| { - if (field_val.tag() != .unreachable_value) continue; + if (field_val.tag() != .unreachable_value or !tuple.types[i].hasRuntimeBits()) continue; count += 1; if (count > max_fields_byval) return true; |
