Clarification on Gcc's strict aliasing rules

Segher Boessenkool segher@kernel.crashing.org
Fri Nov 12 16:42:00 GMT 2010


> But you finally said
>
>     - you can not access it as int:
>
>         that object (t.i) does not have a stored value therefore it
>         doesn't exist.

(Your words, not mine -- and such sloppy wording gets you into trouble,
the standard does not talk about any of this.  It is one way of looking
at it though).

> This is what I understood from what you said, please correct me if I'm
> wrong.
>
> However doing:
>
>      int i = t.i;
>
> is defined in C (as long as there's no trap representation) even if 't.i'
> object has no stored value.

Actually, I think this is a GCC extension, and I was mistaken to say it
is valid C99 before.  Standard C allows you to read from t.d or t, but not
t.i, after storing into t.d .


Segher



More information about the Gcc-help mailing list