@@ -1777,6 +1777,7 @@ pub const Object = struct {
17771777 }
17781778
17791779 const fields = ty .structFields ();
1780+ const layout = ty .containerLayout ();
17801781
17811782 var di_fields : std .ArrayListUnmanaged (* llvm .DIType ) = .{};
17821783 defer di_fields .deinit (gpa );
@@ -1790,7 +1791,7 @@ pub const Object = struct {
17901791 if (field .is_comptime or ! field .ty .hasRuntimeBitsIgnoreComptime ()) continue ;
17911792
17921793 const field_size = field .ty .abiSize (target );
1793- const field_align = field .normalAlignment (target );
1794+ const field_align = field .alignment (target , layout );
17941795 const field_offset = std .mem .alignForwardGeneric (u64 , offset , field_align );
17951796 offset = field_offset + field_size ;
17961797
@@ -2425,7 +2426,7 @@ pub const DeclGen = struct {
24252426
24262427 fn lowerType (dg : * DeclGen , t : Type ) Allocator.Error ! * const llvm.Type {
24272428 const llvm_ty = try lowerTypeInner (dg , t );
2428- if (std .debug .runtime_safety and false ) check : {
2429+ if (std .debug .runtime_safety ) check : {
24292430 if (t .zigTypeTag () == .Opaque ) break :check ;
24302431 if (! t .hasRuntimeBits ()) break :check ;
24312432 if (! llvm_ty .isSized ().toBool ()) break :check ;
@@ -2684,7 +2685,7 @@ pub const DeclGen = struct {
26842685 for (struct_obj .fields .values ()) | field | {
26852686 if (field .is_comptime or ! field .ty .hasRuntimeBitsIgnoreComptime ()) continue ;
26862687
2687- const field_align = field .normalAlignment (target );
2688+ const field_align = field .alignment (target , struct_obj . layout );
26882689 big_align = @maximum (big_align , field_align );
26892690 const prev_offset = offset ;
26902691 offset = std .mem .alignForwardGeneric (u64 , offset , field_align );
@@ -3344,7 +3345,7 @@ pub const DeclGen = struct {
33443345 for (struct_obj .fields .values ()) | field , i | {
33453346 if (field .is_comptime or ! field .ty .hasRuntimeBitsIgnoreComptime ()) continue ;
33463347
3347- const field_align = field .normalAlignment (target );
3348+ const field_align = field .alignment (target , struct_obj . layout );
33483349 big_align = @maximum (big_align , field_align );
33493350 const prev_offset = offset ;
33503351 offset = std .mem .alignForwardGeneric (u64 , offset , field_align );
@@ -8884,13 +8885,14 @@ fn llvmFieldIndex(
88848885 }
88858886 return null ;
88868887 }
8887- assert (ty .containerLayout () != .Packed );
8888+ const layout = ty .containerLayout ();
8889+ assert (layout != .Packed );
88888890
88898891 var llvm_field_index : c_uint = 0 ;
88908892 for (ty .structFields ().values ()) | field , i | {
88918893 if (field .is_comptime or ! field .ty .hasRuntimeBitsIgnoreComptime ()) continue ;
88928894
8893- const field_align = field .normalAlignment (target );
8895+ const field_align = field .alignment (target , layout );
88948896 big_align = @maximum (big_align , field_align );
88958897 const prev_offset = offset ;
88968898 offset = std .mem .alignForwardGeneric (u64 , offset , field_align );
0 commit comments