This is the mail archive of the
gcc@gcc.gnu.org
mailing list for the GCC project.
Re: GCC aliasing rules: more aggressive than C99?
- From: Andreas Schwab <schwab at linux-m68k dot org>
- To: Florian Weimer <fw at deneb dot enyo dot de>
- Cc: Joshua Haberman <jhaberman at gmail dot com>, gcc at gcc dot gnu dot org
- Date: Sun, 03 Jan 2010 13:52:14 +0100
- Subject: Re: GCC aliasing rules: more aggressive than C99?
- References: <loom.20100103T063932-636@post.gmane.org> <87y6kfzb40.fsf@mid.deneb.enyo.de>
Florian Weimer <fw@deneb.enyo.de> writes:
> * Joshua Haberman:
>
>> To me this allows the following:
>>
>> int i;
>> union u { int x; } *pu = (union u*)&i;
>> printf("%d\n", pu->x);
>
> I think the cast on the secodn line is undefined,
Only if union u has stricter alignment requirements than int; otherwise
you are guaranteed to get back the original pointer when casting back to
int*.
Andreas.
--
Andreas Schwab, schwab@linux-m68k.org
GPG Key fingerprint = 58CA 54C7 6D53 942B 1756 01D3 44D5 214B 8276 4ED5
"And now for something completely different."