summaryrefslogtreecommitdiff
path: root/gcc/testsuite/gfortran.dg/alloc_comp_basics_5.f90
diff options
context:
space:
mode:
Diffstat (limited to 'gcc/testsuite/gfortran.dg/alloc_comp_basics_5.f90')
-rw-r--r--gcc/testsuite/gfortran.dg/alloc_comp_basics_5.f9047
1 files changed, 47 insertions, 0 deletions
diff --git a/gcc/testsuite/gfortran.dg/alloc_comp_basics_5.f90 b/gcc/testsuite/gfortran.dg/alloc_comp_basics_5.f90
new file mode 100644
index 000000000..99cd9e08c
--- /dev/null
+++ b/gcc/testsuite/gfortran.dg/alloc_comp_basics_5.f90
@@ -0,0 +1,47 @@
+! { dg-do run }
+! This checks the correct functioning of derived types with the SAVE
+! attribute and allocatable components - PR31163
+!
+! Contributed by Salvatore Filippone <salvatore.filippone@uniroma2.it>
+!
+Module bar_mod
+
+ type foo_type
+ integer, allocatable :: mv(:)
+ end type foo_type
+
+
+contains
+
+
+ subroutine bar_foo_ab(info)
+
+ integer, intent(out) :: info
+ Type(foo_type), save :: f_a
+
+ if (allocated(f_a%mv)) then
+ info = size(f_a%mv)
+ else
+ allocate(f_a%mv(10),stat=info)
+ if (info /= 0) then
+ info = -1
+ endif
+ end if
+ end subroutine bar_foo_ab
+
+
+end module bar_mod
+
+program tsave
+ use bar_mod
+
+ integer :: info
+
+ call bar_foo_ab(info)
+ if (info .ne. 0) call abort ()
+ call bar_foo_ab(info)
+ if (info .ne. 10) call abort ()
+
+end program tsave
+
+! { dg-final { cleanup-modules "bar_mod" } }