summaryrefslogtreecommitdiff
path: root/gcc/testsuite/gfortran.dg/host_assoc_variable_1.f90
blob: 1e7adea88949846e4c1b1eb7e2ceef67ca3f44dc (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
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
! { dg-do compile }
! This tests that PR32760, in its various manifestations is fixed.
!
! Contributed by Harald Anlauf <anlauf@gmx.de>
!
! This is the original bug - the frontend tried to fix the flavor of
! 'PRINT' too early so that the compile failed on the subroutine 
! declaration.
!
module gfcbug68
  implicit none
  public :: print
contains
  subroutine foo (i)
    integer, intent(in)  :: i
    print *, i
  end subroutine foo
  subroutine print (m)
    integer, intent(in) :: m
  end subroutine print
end module gfcbug68

! This version of the bug appears in comment # 21.
!
module m
  public :: volatile
contains
  subroutine foo
    volatile :: bar
  end subroutine foo
  subroutine volatile
  end subroutine volatile
end module

! This was a problem with the resolution of the STAT parameter in 
! ALLOCATE and DEALLOCATE that was exposed in comment #25.
!
module n
  public :: integer
  private :: istat
contains
  subroutine foo
    integer, allocatable :: s(:), t(:)
    allocate(t(5))
    allocate(s(4), stat=istat)
  end subroutine foo
  subroutine integer()
  end subroutine integer
end module n

! This is the version of the bug in comment #12 of the PR.
!
module gfcbug68a
  implicit none
  public :: write
contains
  function foo (i)
    integer, intent(in)  :: i
    integer foo
    write (*,*) i
    foo = i
  end function foo
  subroutine write (m)
    integer, intent(in) :: m
    print *, m*m*m
  end subroutine write
end module gfcbug68a

program testit
  use gfcbug68a
  integer :: i = 27
  integer :: k
  k = foo(i)
  print *, "in the main:", k
  call write(33)
end program testit
! { dg-final { cleanup-modules "gfcbug68 gfcbug68a m n" } }