alias question

Andrew Haley aph@redhat.com
Fri Feb 18 13:45:00 GMT 2011


On 02/18/2011 10:40 AM, Segher Boessenkool wrote:
>>>> If I have a char array, and it's always written by the char array, can
>>>> it
>>>> be always reliably read by any combination of short/int/long pointers?
>>>>
>>>> As I understand, the compiler will see byte writes for all types, so
>>>> readind shoulg be fine without violating any strict alias rules.  Just
>>>> can't write the array by any other type than char[] access.  Right?
>>>
>>> No.  You can access anything only as its declared type or character
>>> type;
>>> an array of char thus can be accessed as char only.
>>
>> Not quite: if you write an int to an array of char, you can read it
>> back again.  What matters is the effective type.
>
> Of course, but the effective type is equal to the declared type (if there
> is any) of the object,
> so that write as int is undefined behaviour already!

No: character types are special.  See Section 6.5 re arrays of
character type and effective types.

Andrew.



More information about the Gcc-help mailing list