xref: /llvm-project/flang/test/Semantics/separate-mp05.f90 (revision a7eaae4ec686ddfb8f91868fc8d053b2163f7ec7)
111d07d9eSPeter Klausler! RUN: %python %S/test_symbols.py %s %flang_fc1
211d07d9eSPeter Klausler! Ensure that SMPs work with dummy procedures declared as interfaces
311d07d9eSPeter Klausler!DEF: /m Module
411d07d9eSPeter Klauslermodule m
511d07d9eSPeter Klausler implicit none
611d07d9eSPeter Klausler interface
711d07d9eSPeter Klausler  !DEF: /m/smp MODULE, PUBLIC, PURE (Function) Subprogram REAL(4)
811d07d9eSPeter Klausler  !DEF: /m/smp/f EXTERNAL, PURE (Function) Subprogram REAL(4)
911d07d9eSPeter Klausler  !DEF: /m/smp/x INTENT(IN) ObjectEntity REAL(4)
10*a7eaae4eSharishch4  !DEF: /m/smp/res ObjectEntity REAL(4)
1111d07d9eSPeter Klausler  pure module function smp(f, x) result(res)
12*a7eaae4eSharishch4  !REF: /m/smp/res
13*a7eaae4eSharishch4  real res
1411d07d9eSPeter Klausler   interface
1511d07d9eSPeter Klausler    !REF: /m/smp/f
1611d07d9eSPeter Klausler    !DEF: /m/smp/f/x INTENT(IN) ObjectEntity REAL(4)
1711d07d9eSPeter Klausler    !DEF: /m/smp/f/r ObjectEntity REAL(4)
1811d07d9eSPeter Klausler    pure function f(x) result(r)
1911d07d9eSPeter Klausler     !REF: /m/smp/f/x
2011d07d9eSPeter Klausler     real, intent(in) :: x
2111d07d9eSPeter Klausler     !REF: /m/smp/f/r
2211d07d9eSPeter Klausler     real r
2311d07d9eSPeter Klausler    end function
2411d07d9eSPeter Klausler   end interface
2511d07d9eSPeter Klausler   !REF: /m/smp/x
2611d07d9eSPeter Klausler   real, intent(in) :: x
2711d07d9eSPeter Klausler  end function
2811d07d9eSPeter Klausler end interface
2911d07d9eSPeter Klauslerend module
3011d07d9eSPeter Klausler!REF: /m
3111d07d9eSPeter Klausler!DEF: /m/sm Module
3211d07d9eSPeter Klauslersubmodule (m)sm
3311d07d9eSPeter Klausler implicit none
3411d07d9eSPeter Klauslercontains
3511d07d9eSPeter Klausler !DEF: /m/sm/smp MODULE, PUBLIC, PURE (Function) Subprogram REAL(4)
3611d07d9eSPeter Klausler module procedure smp
37*a7eaae4eSharishch4  !DEF: /m/sm/smp/res ObjectEntity REAL(4)
3811d07d9eSPeter Klausler  !DEF: /m/sm/smp/f EXTERNAL, PURE (Function) Subprogram REAL(4)
3911d07d9eSPeter Klausler  !DEF: /m/sm/smp/x INTENT(IN) ObjectEntity REAL(4)
4011d07d9eSPeter Klausler  res = f(x)
4111d07d9eSPeter Klausler end procedure
4211d07d9eSPeter Klauslerend submodule
43