@@ -1841,6 +1841,7 @@ pub const Object = struct {
18411841 }
18421842
18431843 const fields = ty .structFields ();
1844+ const layout = ty .containerLayout ();
18441845
18451846 var di_fields : std .ArrayListUnmanaged (* llvm .DIType ) = .{};
18461847 defer di_fields .deinit (gpa );
@@ -1854,7 +1855,7 @@ pub const Object = struct {
18541855 if (field .is_comptime or ! field .ty .hasRuntimeBitsIgnoreComptime ()) continue ;
18551856
18561857 const field_size = field .ty .abiSize (target );
1857- const field_align = field .normalAlignment (target );
1858+ const field_align = field .alignment (target , layout );
18581859 const field_offset = std .mem .alignForwardGeneric (u64 , offset , field_align );
18591860 offset = field_offset + field_size ;
18601861
@@ -2499,7 +2500,7 @@ pub const DeclGen = struct {
24992500
25002501 fn lowerType (dg : * DeclGen , t : Type ) Allocator.Error ! * const llvm.Type {
25012502 const llvm_ty = try lowerTypeInner (dg , t );
2502- if (std .debug .runtime_safety and false ) check : {
2503+ if (std .debug .runtime_safety ) check : {
25032504 if (t .zigTypeTag () == .Opaque ) break :check ;
25042505 if (! t .hasRuntimeBits ()) break :check ;
25052506 if (! llvm_ty .isSized ().toBool ()) break :check ;
@@ -2757,7 +2758,7 @@ pub const DeclGen = struct {
27572758 for (struct_obj .fields .values ()) | field | {
27582759 if (field .is_comptime or ! field .ty .hasRuntimeBitsIgnoreComptime ()) continue ;
27592760
2760- const field_align = field .normalAlignment (target );
2761+ const field_align = field .alignment (target , struct_obj . layout );
27612762 const field_ty_align = field .ty .abiAlignment (target );
27622763 any_underaligned_fields = any_underaligned_fields or
27632764 field_align < field_ty_align ;
@@ -3433,7 +3434,7 @@ pub const DeclGen = struct {
34333434 for (struct_obj .fields .values ()) | field , i | {
34343435 if (field .is_comptime or ! field .ty .hasRuntimeBitsIgnoreComptime ()) continue ;
34353436
3436- const field_align = field .normalAlignment (target );
3437+ const field_align = field .alignment (target , struct_obj . layout );
34373438 big_align = @maximum (big_align , field_align );
34383439 const prev_offset = offset ;
34393440 offset = std .mem .alignForwardGeneric (u64 , offset , field_align );
@@ -9376,13 +9377,14 @@ fn llvmFieldIndex(
93769377 }
93779378 return null ;
93789379 }
9379- assert (ty .containerLayout () != .Packed );
9380+ const layout = ty .containerLayout ();
9381+ assert (layout != .Packed );
93809382
93819383 var llvm_field_index : c_uint = 0 ;
93829384 for (ty .structFields ().values ()) | field , i | {
93839385 if (field .is_comptime or ! field .ty .hasRuntimeBitsIgnoreComptime ()) continue ;
93849386
9385- const field_align = field .normalAlignment (target );
9387+ const field_align = field .alignment (target , layout );
93869388 big_align = @maximum (big_align , field_align );
93879389 const prev_offset = offset ;
93889390 offset = std .mem .alignForwardGeneric (u64 , offset , field_align );
0 commit comments