diff options
Diffstat (limited to 'gcc/testsuite/gfortran.dg/auto_char_len_3.f90')
-rw-r--r-- | gcc/testsuite/gfortran.dg/auto_char_len_3.f90 | 27 |
1 files changed, 27 insertions, 0 deletions
diff --git a/gcc/testsuite/gfortran.dg/auto_char_len_3.f90 b/gcc/testsuite/gfortran.dg/auto_char_len_3.f90 new file mode 100644 index 000000000..da8cf5e4e --- /dev/null +++ b/gcc/testsuite/gfortran.dg/auto_char_len_3.f90 @@ -0,0 +1,27 @@ +! { dg-do run } +! Test the fix for PR26257, in which the implicit reference to +! chararray in the main program call of chararray2string would +! cause a segfault in gfc_build_addr_expr. +! +! Based on the reduced testcase in the PR. +module chtest +contains + function chararray2string(chararray) result(text) + character(len=1), dimension(:) :: chararray ! input + character(len=size(chararray, 1)) :: text ! output + do i = 1,size(chararray,1) + text(i:i) = chararray (i) + end do + end function chararray2string +end module chtest +program TestStringTools + use chtest + character(len=52) :: txt + character(len=1), dimension(52) :: chararr = & + (/(char(i+64),char(i+96), i = 1,26)/) + txt = chararray2string(chararr) + if (txt .ne. "AaBbCcDdEeFfGgHhIiJjKkLlMmNnOoPpQqRrSsTtUuVvWwXxYyZz") & + call abort () +end program TestStringTools + +! { dg-final { cleanup-modules "chtest" } } |