1! { dg-do run } 2! This checks the correct functioning of derived types with the SAVE 3! attribute and allocatable components - PR31163 4! 5! Contributed by Salvatore Filippone <salvatore.filippone@uniroma2.it> 6! 7Module bar_mod 8 9 type foo_type 10 integer, allocatable :: mv(:) 11 end type foo_type 12 13 14contains 15 16 17 subroutine bar_foo_ab(info) 18 19 integer, intent(out) :: info 20 Type(foo_type), save :: f_a 21 22 if (allocated(f_a%mv)) then 23 info = size(f_a%mv) 24 else 25 allocate(f_a%mv(10),stat=info) 26 if (info /= 0) then 27 info = -1 28 endif 29 end if 30 end subroutine bar_foo_ab 31 32 33end module bar_mod 34 35program tsave 36 use bar_mod 37 38 integer :: info 39 40 call bar_foo_ab(info) 41 if (info .ne. 0) call abort () 42 call bar_foo_ab(info) 43 if (info .ne. 10) call abort () 44 45end program tsave 46