https://gcc.gnu.org/bugzilla/show_bug.cgi?id=89351
Jakub Jelinek <jakub at gcc dot gnu.org> changed: What |Removed |Added ---------------------------------------------------------------------------- CC| |jakub at gcc dot gnu.org, | |rth at gcc dot gnu.org, | |torvald at gcc dot gnu.org --- Comment #1 from Jakub Jelinek <jakub at gcc dot gnu.org> --- Cleaned up testcase with -fgnu-tm: struct S { int a : 5; unsigned b : 7; } c[1][1]; void foo (int x) { } void bar (void) { __transaction_relaxed { foo (c[0][1].b); } } Seems the TM code can't deal with bitfields properly: _15 = __builtin__ITM_RU1 (&c[0][1].b); taking address of a bitfield is invalid. Dunno what exactly it should do, perhaps tak address of the DECL_BIT_FIELD_REPRESENTATIVE and read the DECL_BIT_FIELD_REPRESENTATIVE instead and then BIT_FIELD_REF or something similar out of this? And similarly deal somehow with the stores to bitfields (that is actually a read modify write cycle that likely would need to be exposed. That said, -fgnu-tm is pretty much unmaintained for years, so maybe best would be to remove that support (e.g. I believe it doesn't handle internal functions at all, which appear commonly in the IL these days, doesn't handle various builtins correctly, etc.).