https://gcc.gnu.org/bugzilla/show_bug.cgi?id=88117
--- Comment #4 from Thomas Koenig <tkoenig at gcc dot gnu.org> ---
Looking at the reduced test case, we have
z.span = 0;
{
character(kind=1)[0:][1:.z] * D.3877;
integer(kind=8) D.3878;
integer(kind=8) D.3879;
integer(kind=8) D.3880;
character(kind=1)[0:][1:._F.DA0] * D.3881;
integer(kind=8) D.3882;
integer(kind=8) D.3883;
integer(kind=8) D.3884;
integer(kind=8) D.3885;
struct array01_unknown atmp.0;
logical(kind=4) D.3899;
integer(kind=8) D.3900;
void * restrict D.3901;
void * restrict D.3902;
integer(kind=8) D.3903;
integer(kind=8) D.3904;
D.3908 = .z;
(notice the absence of a declaration for D.3908 above) and later
while (1)
{
if (S.1 > D.3885) goto L.1;
{
integer(kind=8) D.3908;
integer(kind=8) D.3909;
integer(kind=8) D.3910;
I suspect this can be fixed by replacing "gfc_add_block"
with "gfc_init_block" in the right place. Now the only
problem is where...