This is the mail archive of the
gcc@gcc.gnu.org
mailing list for the GCC project.
Re: Undefined behavior due to 6.5.16.1p3
- From: Vincent Lefevre <vincent+gcc at vinc17 dot org>
- To: gcc at gcc dot gnu dot org
- Date: Fri, 13 Mar 2015 10:56:55 +0100
- Subject: Re: Undefined behavior due to 6.5.16.1p3
- Authentication-results: sourceware.org; auth=none
- References: <54FF1F7C dot 5050501 at robbertkrebbers dot nl> <54FF2182 dot 1090800 at robbertkrebbers dot nl> <alpine dot DEB dot 2 dot 10 dot 1503102153590 dot 10726 at digraph dot polyomino dot org dot uk> <550042BD dot 8000608 at robbertkrebbers dot nl> <20150311160815 dot GA2967 at ypig dot lip dot ens-lyon dot fr> <20150311161155 dot GM1746 at tucnak dot redhat dot com> <20150311163101 dot GA4384 at ypig dot lip dot ens-lyon dot fr> <5500CD9B dot 2070207 at robbertkrebbers dot nl> <20150312091055 dot GB28490 at ypig dot lip dot ens-lyon dot fr> <5501EF46 dot 2030309 at redhat dot com>
On 2015-03-12 13:55:50 -0600, Martin Sebor wrote:
> On 03/12/2015 03:10 AM, Vincent Lefevre wrote:
> >Well, this depends on the interpretation of effective types in the
> >case of a union. For instance, when writing
> >
> > union { char a[16]; int b; } u;
> > u.b = 1;
> >
> >you don't set the member only (an int), but the whole union object is
> >affected, even bytes that are not parts of the int. So, one may see
> >the effective type as being the union type.
>
> The purpose of the term /effective type/ is to make it possible
> to talk about types of allocated objects (those with no declared
> type). In the example above, u.b is declared to have the type
> int and assigning to it doesn't change the type of other members
> of the union. But because u.a has a character type the value of
> u.b can be accessed via u.a (or any other lvalue of that type).
But if an object is declared with type T, the effective type of this
object is T, right? So, above, the effective type of u is the union
{ char a[16]; int b; } type.
--
Vincent Lefèvre <vincent@vinc17.net> - Web: <https://www.vinc17.net/>
100% accessible validated (X)HTML - Blog: <https://www.vinc17.net/blog/>
Work: CR INRIA - computer arithmetic / AriC project (LIP, ENS-Lyon)