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

Reply via email to