diff options
Diffstat (limited to 'gcc/testsuite/gfortran.dg/mapping_3.f90')
-rw-r--r-- | gcc/testsuite/gfortran.dg/mapping_3.f90 | 33 |
1 files changed, 33 insertions, 0 deletions
diff --git a/gcc/testsuite/gfortran.dg/mapping_3.f90 b/gcc/testsuite/gfortran.dg/mapping_3.f90 new file mode 100644 index 000000000..318ec00c0 --- /dev/null +++ b/gcc/testsuite/gfortran.dg/mapping_3.f90 @@ -0,0 +1,33 @@ +! { dg-do run } +! Tests the fix for PR33888, in which the character length of +! the elemental function myfunc was not being calculated before +! the temporary for the array result was allocated. +! +! Contributed by Walter Spector <w6ws@earthlink.net> +! +program ftn95bug + implicit none + + character(8) :: indata(4) = & + (/ '12344321', '98766789', 'abcdefgh', 'ABCDEFGH' /) + + call process (myfunc (indata)) ! <- This caused a gfortran ICE ! + +contains + + elemental function myfunc (s) + character(*), intent(in) :: s + character(len (s)) :: myfunc + + myfunc = s + + end function + + subroutine process (strings) + character(*), intent(in) :: strings(:) + + if (any (strings .ne. indata)) call abort () + + end subroutine + +end program |