From: Blady <p.p11@orange.fr>
Subject: Re: Pack aspect with aliased component.
Date: Thu, 6 Mar 2025 21:52:44 +0100 [thread overview]
Message-ID: <vqd1us$34pkb$1@dont-email.me> (raw)
In-Reply-To: <vq1fma$o9gj$1@dont-email.me>
Le 02/03/2025 à 12:33, Jeffrey R.Carter a écrit :
> On 2025-03-02 10:29, Blady wrote:
>>
>> With the following AARM example:
>> 14.e/3 {AI05-0229-1} procedure Q is
>> use P1, P2;
>> type Array1 is array(Integer range <>) of aliased S1
>> with Pack; -- warning: cannot pack aliased
>> components (RM 13.2(7))
>>
>> GNAT issues the warning in comment above.
>>
>> Why packed type couldn't have aliased components?
>
> This is a warning, not an error. The compiler has accepted the
> declaration and you can use it.
>
> Remember that Pack is a suggestion to the compiler, not a requirement,
> and the compiler can ignore it, or pack things less tightly than you
> might like.
>
> An aliased component may be accessed through an alias (access value),
> and that access will not know that the component has been packed, and so
> access memory belonging to other components as well. For this reason,
> aliased components cannot be packed.
>
> You can specify Component_Size for the type; the compiler must either be
> able to make the components that size, or reject the declaration.
> Specifying a Component_Size for an aliased component that makes the
> component smaller than a stand-alone object of the type will be rejected.
Thanks Jeff, your explanation seems to me clearer than the AARM ;)
prev parent reply other threads:[~2025-03-06 20:52 UTC|newest]
Thread overview: 3+ messages / expand[flat|nested] mbox.gz Atom feed top
2025-03-02 9:29 Pack aspect with aliased component Blady
2025-03-02 11:33 ` Jeffrey R.Carter
2025-03-06 20:52 ` Blady [this message]
replies disabled
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox