diff options
Diffstat (limited to 'gcc/testsuite/gfortran.dg/use_24.f90')
-rw-r--r-- | gcc/testsuite/gfortran.dg/use_24.f90 | 53 |
1 files changed, 53 insertions, 0 deletions
diff --git a/gcc/testsuite/gfortran.dg/use_24.f90 b/gcc/testsuite/gfortran.dg/use_24.f90 new file mode 100644 index 00000000000..b709347b0fd --- /dev/null +++ b/gcc/testsuite/gfortran.dg/use_24.f90 @@ -0,0 +1,53 @@ +! { dg-do run } +! +! PR fortran/42769 +! The static resolution of A%GET used to be incorrectly simplified to MOD2's +! MY_GET instead of the original MOD1's MY_GET, depending on the order in which +! MOD1 and MOD2 were use-associated. +! +! Original testcase by Salvator Filippone <sfilippone@uniroma2.it> +! Reduced by Janus Weil <janus@gcc.gnu.org> + +module mod1 + type :: t1 + contains + procedure, nopass :: get => my_get + end type +contains + subroutine my_get(i) + i = 2 + end subroutine +end module + +module mod2 +contains + subroutine my_get(i) ! must have the same name as the function in mod1 + i = 5 + end subroutine +end module + + + call test1() + call test2() + +contains + + subroutine test1() + use mod2 + use mod1 + type(t1) :: a + call a%get(j) + if (j /= 2) call abort + end subroutine test1 + + subroutine test2() + use mod1 + use mod2 + type(t1) :: a + call a%get(j) + if (j /= 2) call abort + end subroutine test2 +end + + + |