 |
may_alias |
Accesses to objects with types with this attribute are not subjected to
type-based alias analysis, but are instead assumed to be able to alias
any other type of objects, just like the char
type. See
'-fstrict-aliasing' for more information on aliasing issues.
Example of use:
typedef short __attribute__((__may_alias__)) short_a;
void _main (void)
{
long a = 0x12345678;
short_a *b = (short_a *) &a;
b[1] = 0;
if (a == 0x12345678)
abort();
/* ... */
}
If you replaced short_a
with short
in the variable
declaration, the above program would abort when compiled with
'-fstrict-aliasing', which is on by default at '-O2' or
above in recent GCC versions.