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...

Reply via email to