diff options
Diffstat (limited to 'gcc/testsuite/gfortran.dg/entry_1.f90')
-rw-r--r-- | gcc/testsuite/gfortran.dg/entry_1.f90 | 47 |
1 files changed, 47 insertions, 0 deletions
diff --git a/gcc/testsuite/gfortran.dg/entry_1.f90 b/gcc/testsuite/gfortran.dg/entry_1.f90 new file mode 100644 index 000000000..c9048a044 --- /dev/null +++ b/gcc/testsuite/gfortran.dg/entry_1.f90 @@ -0,0 +1,47 @@ +! { dg-do run } +! Test alternate entry points in a module procedure +! Also check that references to sibling entry points are resolved correctly. +module m +contains +subroutine indirecta (p) + call p (3, 4) +end subroutine +subroutine indirectb (p) + call p (5) +end subroutine + +subroutine test1 + implicit none + call indirecta (foo) + call indirectb (bar) +end subroutine + +subroutine foo(a, b) + integer a, b + logical, save :: was_foo = .false. + if ((a .ne. 3) .or. (b .ne. 4)) call abort + was_foo = .true. +entry bar(a) + if (was_foo) then + if ((a .ne. 3) .or. (b .ne. 4)) call abort + else + if (a .ne. 5) call abort + end if + was_foo = .false. +end subroutine + +subroutine test2 + call foo (3, 4) + call bar (5) +end subroutine +end module + +program p + use m + call foo (3, 4) + call bar (5) + call test1 () + call test2 () +end program + +! { dg-final { cleanup-modules "m" } } |