This is the mail archive of the gcc@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: GCC aliasing rules: more aggressive than C99?


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."


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]