https://gcc.gnu.org/bugzilla/show_bug.cgi?id=125391
Paul Thomas <pault at gcc dot gnu.org> changed:
What |Removed |Added
----------------------------------------------------------------------------
CC| |pault at gcc dot gnu.org
--- Comment #1 from Paul Thomas <pault at gcc dot gnu.org> ---
For the record, the finalization call if guarded by a null check on
D.4929->items.data:
if ((struct inner[0:] * restrict) D.4929->items.data != 0B)
{
{
struct outer * D.4928;
D.4928 = lhs->_data;
__final_m_Inner (&D.4928->items, 4, 0);
}
}
D.4929 is declared afterwards in the assignment loop (ie. finalization of lhs
before assignment);:
while (1)
{
if (S.15 > D.4915) goto L.26;
{
struct outer * D.4929;
(*D.4922)[(S.15 + D.4926) + D.4923] = (*D.4912)[S.15 + D.4913];
}
S.15 = S.15 + 1;
}
At the moment, I cannot see why this is happening.
Paul