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

--- Comment #4 from anlauf at gcc dot gnu.org ---
(In reply to anlauf from comment #3)
> I might be missing to set some elem_len or span or ...

Testcase:

module operations
  implicit none
contains
  pure function c_op (i, j) result (ij)
    character(8), intent(in) :: i, j
    character(8) :: ij
    integer :: n
    ij = i
    do n = 1, 8
       if (i(n:n) .ne. j(n:n)) ij(n:n) = '!'
    end do
  end function c_op
end module operations

program test_reduce
   use operations
   implicit none
   character(*), parameter :: carray (4) = ['abctefgh', 'atcdefgh', &
                                            'abcdefth', 'abcdtfgh']
   print *, reduce (carray, c_op)
end


The dump-tree has:

      _gfortran_reduce_scalar_c ((character(kind=1)[1:8] *) &str.3, 8, &parm.2,
__reduce_wrapper_c_op_test_reduce, 0B, 0B, 0B, 0B, 8);


but the prototype in reduce.c:

extern void reduce_scalar_c (void *, index_type, parray *,
                      void (*operation) (void *, void *, void *),
                      GFC_INTEGER_4 *, gfc_array_l4 *, void *, void *,
                      index_type, index_type);

The last two arguments are string lengths, but only one is provided...

Reply via email to