From: "Jeffrey R.Carter" <spam.jrcarter.not@spam.acm.org.not>
Subject: Re: Pack aspect with aliased component.
Date: Sun, 2 Mar 2025 12:33:30 +0100 [thread overview]
Message-ID: <vq1fma$o9gj$1@dont-email.me> (raw)
In-Reply-To: <vq18dq$nfjk$1@dont-email.me>
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.
--
Jeff Carter
"I've seen projects fail miserably for blindly
applying the Agile catechism: we're Agile, we
don't need to stop and think, we just go ahead
and code!"
Bertrand Meyer
150
next prev parent reply other threads:[~2025-03-02 11:33 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 [this message]
2025-03-06 20:52 ` Blady
replies disabled
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox