https://gcc.gnu.org/bugzilla/show_bug.cgi?id=88223
--- Comment #6 from Richard Biener <rguenth at gcc dot gnu.org> ---
Hmm, and with unions we can break the TBAA rule.
union U {
struct X { int a : 3; int b : 8; } a;
struct Y { int a : 4; int b : 8; } b;
};
union U u;
int __attribute__((noinline)) bar ()
{
int x = u.a.b;
u.b.b = x;
return u.a.b;
}
int main()
{
u.a.b = 1;
if (bar () != 3)
abort ();
return 0;
}
testcase is specific on bitfield layout of course and to the GCC extension
allowing type-punning via unions.