diff options
Diffstat (limited to 'gcc/testsuite/gfortran.dg/char_expr_1.f90')
-rw-r--r-- | gcc/testsuite/gfortran.dg/char_expr_1.f90 | 20 |
1 files changed, 20 insertions, 0 deletions
diff --git a/gcc/testsuite/gfortran.dg/char_expr_1.f90 b/gcc/testsuite/gfortran.dg/char_expr_1.f90 new file mode 100644 index 000000000..35bfe3477 --- /dev/null +++ b/gcc/testsuite/gfortran.dg/char_expr_1.f90 @@ -0,0 +1,20 @@ +! { dg-do run } +! PR fortran/36795 +! "(str)" (= an expression) was regarded as "str" (= a variable) +! and thus when yy was deallocated so was xx. Result: An invalid +! memory access. +! +program main + implicit none + character (len=10), allocatable :: str(:) + allocate (str(1)) + str(1) = "dog" + if (size(str) /= 1 .or. str(1) /= "dog") call abort() +contains + subroutine foo(xx,yy) + character (len=*), intent(in) :: xx(:) + character (len=*), intent(out), allocatable :: yy(:) + allocate (yy(size(xx))) + yy = xx + end subroutine foo +end program main |