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

--- Comment #7 from Jakub Jelinek <jakub at gcc dot gnu.org> ---
I don't see any conversion function to be called:
fsub (struct array15_integer(kind=4) & restrict dat)
{
  {
    integer(kind=4) * __tmp_INTEGER_4_rank_0;

    {
      signed char D.3928;
      integer(kind=8) D.3929;
      signed char D.3930;

      D.3928 = dat->dtype.rank;
      D.3929 = (integer(kind=8)) D.3928 + -1;
      D.3930 = D.3928 != 0 ? dat->dim[D.3929].ubound != -1 ? D.3928 : -1 :
D.3928;
      if (D.3930 == 0)
        {
          try
            {
              __tmp_INTEGER_4_rank_0 = (integer(kind=4) *) dat->data;
              if (__tmp_INTEGER_4_rank_0 != 0B)
                {
                  _gfortran_runtime_error_at (&"At line 15 of file
/home/jakub/src/gcc/gcc/testsuite/gfortran.dg/ISO_Fortran_binding_15.f90"[1]{lb:
1 sz: 1}, &"Attempting to allocate already allocated variable \'%s\'"[1]{lb: 1
sz: 1}, &"__tmp_INTEGER_4_rank_0"[1]{lb: 1 sz: 1});
                }
              else
                {
                  __tmp_INTEGER_4_rank_0 = (integer(kind=4) *) __builtin_malloc
(4);
                  if (__tmp_INTEGER_4_rank_0 == 0B)
                    {
                      _gfortran_os_error_at (&"In file
\'/home/jakub/src/gcc/gcc/testsuite/gfortran.dg/ISO_Fortran_binding_15.f90\',
around line 16"[1]{lb: 1 sz: 1}, &"Error allocating %lu bytes"[1]{lb: 1 sz: 1},
4);
                    }
                }
              if (__tmp_INTEGER_4_rank_0 != 0B) goto L.4;
              __tmp_INTEGER_4_rank_0 = (integer(kind=4) *) __builtin_malloc
(4);
              L.4:;
              *__tmp_INTEGER_4_rank_0 = 42;
              L.3:;
            }
          finally
            {
              dat->data = (void * restrict) __tmp_INTEGER_4_rank_0;
            }
          goto L.2;
        }
    }
    L.2:;
    L.1:;
    return;
  }
}

Reply via email to