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.