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