https://gcc.gnu.org/bugzilla/show_bug.cgi?id=110515
Andrew Pinski <pinskia at gcc dot gnu.org> changed: What |Removed |Added ---------------------------------------------------------------------------- Keywords| |alias --- Comment #5 from Andrew Pinski <pinskia at gcc dot gnu.org> --- I am not 100% sure but I think the problem is related to this code (note I added that asm comment there): ``` V *P = u.i; V *E = P + InlineSlots; for (; P != E; ++P) { if (P->v != EmptyKey) { TmpEnd->v = P->v; ++TmpEnd; } } Small = false; //asm("":"+m"(*this)::"memory"); u.o = LargeRep{new V[128], 128}; ``` The problem is most likely the read from u.i is happening after the store to u.o.