diff gcc/testsuite/gfortran.dg/allocate_alloc_opt_10.f90 @ 111:04ced10e8804

gcc 7
author kono
date Fri, 27 Oct 2017 22:46:09 +0900
parents
children 84e7813d76e9
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/gcc/testsuite/gfortran.dg/allocate_alloc_opt_10.f90	Fri Oct 27 22:46:09 2017 +0900
@@ -0,0 +1,46 @@
+! { dg-do run }
+!
+! PR 43388: [F2008][OOP] ALLOCATE with MOLD=
+!
+! Contributed by Janus Weil <janus@gcc.gnu.org>
+
+type :: t1
+  integer :: i
+end type
+
+type,extends(t1) :: t2
+  integer :: j = 4
+end type
+
+class(t1),allocatable :: x,y
+type(t2) :: z
+
+
+!!! first example (static)
+
+z%j = 5
+allocate(x,MOLD=z)
+
+select type (x)
+type is (t2)
+  print *,x%j
+  if (x%j/=4) call abort
+  x%j = 5
+class default
+  call abort()
+end select
+
+
+!!! second example (dynamic, PR 44541)
+
+allocate(y,MOLD=x)
+
+select type (y)
+type is (t2)
+  print *,y%j
+  if (y%j/=4) call abort
+class default
+  call abort()
+end select
+
+end