summaryrefslogtreecommitdiff
path: root/gcc/testsuite/gfortran.dg/alloc_comp_basics_5.f90
blob: 99cd9e08ce342bd5539fe04ab57e5b5351648d9f (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
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" } }