diff --git a/compiler/symdef.pas b/compiler/symdef.pas index 28b16af9a6..c3a1e717d9 100644 --- a/compiler/symdef.pas +++ b/compiler/symdef.pas @@ -3427,16 +3427,13 @@ implementation { alignment of dyn. arrays doesn't depend on the element size } if (ado_IsDynamicArray in arrayoptions) then alignment:=size_2_align(sizeof(pint)) + { alignment is the target alignment for the used load size } + else if (ado_IsBitPacked in arrayoptions) and + (elementdef.typ in [enumdef,orddef]) then + alignment:=cgsize_orddef(int_cgsize(packedbitsloadsize(elepackedbitsize))).alignment { alignment is the alignment of the elements } - else if (elementdef.typ in [arraydef,recorddef,orddef,enumdef,floatdef]) or - ((elementdef.typ=objectdef) and - is_object(elementdef)) then - alignment:=elementdef.alignment - { alignment is the size of the elements } - else if not (ado_IsBitPacked in arrayoptions) then - alignment:=size_2_align(elesize) else - alignment:=packedbitsloadsize(elepackedbitsize); + alignment:=elementdef.alignment end;