xref: /llvm-project/flang/test/Semantics/global01.f90 (revision 37d6c1cc7d4dd3a8a47ba62254bc88521bd50d66)
10d588347SPeter Klausler! RUN: %python %S/test_errors.py %s %flang_fc1 -Werror
20d588347SPeter Klausler! Catch discrepancies between a local interface and a global definition
30d588347SPeter Klausler
40d588347SPeter Klauslersubroutine global1(x)
50d588347SPeter Klausler  integer, intent(in) :: x
60d588347SPeter Klauslerend subroutine
70d588347SPeter Klausler
80d588347SPeter Klauslersubroutine global2(x) bind(c,name="xyz")
90d588347SPeter Klausler  integer, intent(in) :: x
100d588347SPeter Klauslerend subroutine
110d588347SPeter Klausler
120d588347SPeter Klauslersubroutine global3(x)
130d588347SPeter Klausler  integer, intent(in) :: x
140d588347SPeter Klauslerend subroutine
150d588347SPeter Klausler
160d588347SPeter Klauslerpure subroutine global4(x)
170d588347SPeter Klausler  integer, intent(in) :: x
180d588347SPeter Klauslerend subroutine
190d588347SPeter Klausler
200d588347SPeter Klauslersubroutine global5(x)
210d588347SPeter Klausler  integer, intent(in) :: x
220d588347SPeter Klauslerend subroutine
230d588347SPeter Klausler
24*37d6c1ccSPeter Klausler! Regression check: don't emit bogus "Implicit declaration of function 'global7' has a different result type than in previous declaration"
25*37d6c1ccSPeter Klauslerrecursive function global6()
26*37d6c1ccSPeter Klausler  integer global6, z, n
27*37d6c1ccSPeter Klauslerentry global7(n) result(z)
28*37d6c1ccSPeter Klausler  if (n > 0) z = global7(n-1)
29*37d6c1ccSPeter Klauslerend function
30*37d6c1ccSPeter Klausler
310d588347SPeter Klauslerprogram test
320d588347SPeter Klausler  interface
33036701a1SPeter Klausler    !WARNING: The global subprogram 'global1' is not compatible with its local procedure declaration (incompatible dummy argument #1: incompatible dummy data object types: INTEGER(4) vs REAL(4))
340d588347SPeter Klausler    subroutine global1(x)
350d588347SPeter Klausler      real, intent(in) :: x
360d588347SPeter Klausler    end subroutine
370d588347SPeter Klausler    subroutine global2(x)
380d588347SPeter Klausler      real, intent(in) :: x
390d588347SPeter Klausler    end subroutine
400d588347SPeter Klausler    subroutine global3(x) bind(c,name="abc")
410d588347SPeter Klausler      real, intent(in) :: x
420d588347SPeter Klausler    end subroutine
430d588347SPeter Klausler    subroutine global4(x) ! not PURE, but that's ok
440d588347SPeter Klausler      integer, intent(in) :: x
450d588347SPeter Klausler    end subroutine
460d588347SPeter Klausler    !WARNING: The global subprogram 'global5' is not compatible with its local procedure declaration (incompatible procedure attributes: Pure)
470d588347SPeter Klausler    pure subroutine global5(x)
480d588347SPeter Klausler      integer, intent(in) :: x
490d588347SPeter Klausler    end subroutine
50*37d6c1ccSPeter Klausler    function global6()
51*37d6c1ccSPeter Klausler      integer global6
52*37d6c1ccSPeter Klausler    end function
53*37d6c1ccSPeter Klausler    function global7(n) result(z)
54*37d6c1ccSPeter Klausler      integer n, z
55*37d6c1ccSPeter Klausler    end function
560d588347SPeter Klausler  end interface
570d588347SPeter Klauslerend
58