diff options
Diffstat (limited to 'gcc/testsuite/gfortran.dg/pr33646.f90')
-rw-r--r-- | gcc/testsuite/gfortran.dg/pr33646.f90 | 59 |
1 files changed, 59 insertions, 0 deletions
diff --git a/gcc/testsuite/gfortran.dg/pr33646.f90 b/gcc/testsuite/gfortran.dg/pr33646.f90 new file mode 100644 index 000000000..13f65cb06 --- /dev/null +++ b/gcc/testsuite/gfortran.dg/pr33646.f90 @@ -0,0 +1,59 @@ +! { dg-do compile } +! PR fortran/33646 +! +! + +module BAR_MODULE + implicit none + private + public create_ + interface create_ + module procedure create + end interface + type system_type + integer(kind=kind(1)) :: max_memory_used + end type + +contains + + subroutine create(self) + type(system_type) :: self + pointer :: self + allocate(self) + end subroutine + +end + +module FOO_MODULE + use BAR_MODULE + implicit none + private + public create_ + interface create_ + module procedure create + end interface + + public create_copy_ + interface create_copy_ + module procedure create_copy + end interface +contains + + subroutine create(self) + character(*) :: self + pointer :: self + nullify(self) + allocate(self) + + self = " " + end subroutine + + subroutine create_copy(self,s) + character(*) :: self + pointer :: self + character(*) :: s + call create_(self) + end subroutine +end + +! { dg-final { cleanup-modules "BAR_MODULE FOO_MODULE" } } |