https://gcc.gnu.org/bugzilla/show_bug.cgi?id=96312

--- Comment #5 from Thomas Koenig <tkoenig at gcc dot gnu.org> ---
(In reply to Thomas Koenig from comment #4)

> so it is likely that this patch just started issuing a warning
> for a pre-existing bug in the front end.

That is indeed the case.  Grepping for tmp in the modc.f90 dump yields

  struct array01_real(kind=4) tmp;
      tmp.data = 0B;
        tmp.dtype = {.elem_len=4, .rank=1, .type=3};
        D.2309 = tmp;
        D.2310 = (real(kind=4)[0:] * restrict) tmp.data == 0B;
        __builtin_free ((void *) tmp.data);
        tmp.data = D.2309.data;
        D.2311 = ((tmp.dim[0].lbound - D.2309.dim[0].lbound) -
tmp.dim[0].ubound) + D.2309.dim[0].ubound != 0;
        D.2313 = D.2312 ? 1 : tmp.dim[0].lbound;
        tmp.dim[0].lbound = D.2313;
        tmp.dim[0].ubound = D.2309.dim[0].ubound + D.2313;
        tmp.dim[0].stride = 1;
        tmp.offset = D.2314;
        D.2343 = (real(kind=4)[0:] * restrict) tmp.data;
        D.2344 = tmp.offset;
        D.2345 = tmp.dim[0].lbound;
        D.2346 = tmp.dim[0].ubound;
      if ((real(kind=4)[0:] * restrict) tmp.data != 0B)
          __builtin_free ((void *) tmp.data);
          (real(kind=4)[0:] * restrict) tmp.data = 0B;

so there is no way that tmp.dim[0].lbound would have gotten
a value - previous version just didn't see it.

Reply via email to