From: evans@evans.pgh.pa.us (Arthur Evans Jr)
Subject: Re: Unchecked_Union
Date: 1996/02/27
Date: 1996-02-27T00:00:00+00:00 [thread overview]
Message-ID: <evans-2702960924460001@ppp1.pgh.net> (raw)
In-Reply-To: dewar.825178652@schonberg
In article <dewar.825178652@schonberg>, dewar@cs.nyu.edu (Robert Dewar) wrote:
> The following is a description of pragma Unchecked_Union as we are
> implementing it in GNAT. This description is compatible with the
> current Intermetrics usage in their binding generator tool.
This looks most interesting. Two small comments:
> Also, equality and inequality operations on unchecked_unions are not
> available, since there is no discriminant to compare, and in general
> the compiler does not even know how many bits to compare. It is
> implementation dependent whether this is detected at compile time
> as an illegality, or whether it is undetected and considered to be
> an erroneous construct. In GNAT, a direct comparison is illegal,
> but GNAT does not attempt to catch the composite case (where two
> composites are compared that contain an unchecked union component),
> so such comparisons are simply considered erroneous.
My quibble is with the last quoted word. I think you could safely say
that this is a bounded error, since the only effect is that the
comparison will give the wrong answer.
> The layout of the resulting type corresponds exactly to a C union,
> ...
I wonder whether or not that is a well-defined statement. That is, is
the layout a a C union specified anywhere, even for a specific C
implementation? (Maybe this comment is off the wall -- I'm not much of
a C programmer.)
Art Evans
Arthur Evans Jr, PhD Phone: 412-963-0839
Ada Consulting FAX: 412-963-0927
461 Fairview Road
Pittsburgh PA 15238-1933
evans@evans.pgh.pa.us
prev parent reply other threads:[~1996-02-27 0:00 UTC|newest]
Thread overview: 2+ messages / expand[flat|nested] mbox.gz Atom feed top
1996-02-24 0:00 Unchecked_Union Robert Dewar
1996-02-27 0:00 ` Arthur Evans Jr [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