http://gcc.gnu.org/bugzilla/show_bug.cgi?id=55618
Tobias Burnus <burnus at gcc dot gnu.org> changed: What |Removed |Added ---------------------------------------------------------------------------- CC| |burnus at gcc dot gnu.org --- Comment #2 from Tobias Burnus <burnus at gcc dot gnu.org> 2012-12-10 09:45:45 UTC --- Reduced test case: module m implicit none type t character :: str(11) end type t interface char module procedure char_auto end interface char contains pure function char_auto (string) result (char_string) type(t), intent(in) :: string character(LEN=size(string%str)) :: char_string integer :: i_char forall(i_char = 1:size(string%str)) char_string(i_char:i_char) = string%str(i_char) end forall end function char_auto elemental subroutine split_CH (string, set) type(t), intent(inout) :: string character(LEN=*), intent(in) :: set integer :: i do i = 1, min(len(set),size(string%str)) string%str(i) = set(i:i) end do end subroutine split_CH end module m use m type(t) :: mdt, mdt2(2),setdt mdt%str = ['H', 'e', 'l', 'l', 'o', ' ', 'W','o', 'r', 'l', 'd'] mdt2 = [ mdt, mdt ] setdt%str = ['F', 'o', 'r', 't', 'r', 'a', 'n','R', 'u', 'l', 'z'] call split_CH(mdt2, char(setdt)) print '(11a)', mdt2(1)%str print '(11a)', mdt2(2)%str if (any (mdt2(1)%str /= setdt%str)) call abort () if (any (mdt2(2)%str /= setdt%str)) call abort () end