This is the mail archive of the
gcc@gcc.gnu.org
mailing list for the GCC project.
Re: aliasing warnings [patch]
>>>>> Mark Mitchell <mark@codesourcery.com> writes:
>>>>> "Richard" == Richard Henderson <rth@cygnus.com> writes:
Richard> On Thu, Sep 16, 1999 at 01:07:52PM -0700, Mark Mitchell
Richard> wrote:
>>> The underlying type of the fields is `char' and you're putting
>>> `int' into them. That's no different than:
>>>
>>> char c[4]; *((int *) &c[0]) = 3;
Richard> Modulo the alignment argument, isn't this really ok?
Richard> True, the variable has `char' type, but the storage is
Richard> only accessed as `int'.
> I don't think GCC will generate bad code in this case, because of what
> you say. (There's no aliasing issue if all rferences are through the
> `int *'.) But, I don't think this is conforming ISO C. The dynamic
> type of the object is `char ()[4]', while the lvalue is of type `int'.
It seems to me that the assignment creates a new object of type 'int' in
the space previously occupied by the array.
Jason