gcc/ada/
* exp_pakd.adb (Install_PAT): Do not reset the alignment here.
* layout.adb (Layout_Type): Call Adjust_Esize_Alignment after having
copied the RM_Size onto the Esize when the latter is too small.
-- Set remaining fields of packed array type
- Reinit_Alignment (PAT);
Set_Parent (PAT, Empty);
Set_Associated_Node_For_Itype (PAT, Typ);
Set_Original_Array_Type (PAT, Typ);
Size : constant Uint := RM_Size (E);
begin
- Set_Esize (E, RM_Size (E));
+ Set_Esize (E, Size);
-- For scalar types, increase Object_Size to power of 2, but
-- not less than a storage unit in any case (i.e., normally
loop
Set_Alignment (E, 2 * Alignment (E));
end loop;
+
+ -- For the other types, apply standard adjustments
+
+ else
+ Adjust_Esize_Alignment (E);
end if;
end;
end if;