From: Eric Botcazou Date: Thu, 30 Dec 2021 19:06:50 +0000 (+0100) Subject: [Ada] Adjust the alignment to the size for bit-packed arrays X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=a283cf62e45e080f4f9294573b04b9a28cd72ee8;p=test_jj.git [Ada] Adjust the alignment to the size for bit-packed arrays gcc/ada/ * exp_pakd.adb (Install_PAT): If the PAT is a scalar type, apply the canonical adjustment to its alignment. --- diff --git a/gcc/ada/exp_pakd.adb b/gcc/ada/exp_pakd.adb index 78093f8..abb2088 100644 --- a/gcc/ada/exp_pakd.adb +++ b/gcc/ada/exp_pakd.adb @@ -573,6 +573,19 @@ package body Exp_Pakd is end if; end if; + -- In the case of a modular type, make sure the alignment is + -- consistent with the Esize. + + if Is_Scalar_Type (PAT) then + while Alignment (PAT) * System_Storage_Unit < Esize (PAT) + and then Alignment (PAT) < Maximum_Alignment + loop + Set_Alignment (PAT, 2 * Alignment (PAT)); + end loop; + end if; + + -- Then, in all cases, make sure the opposite is also true + Adjust_Esize_Alignment (PAT); -- Set remaining fields of packed array type