39 lines
1.1 KiB
Fortran
39 lines
1.1 KiB
Fortran
! { dg-do run }
|
|
! This tests the fix for PR16940, module interfaces to
|
|
! contained functions caused ICEs.
|
|
! This is a simplified version of the example in the PR
|
|
! discussion, which was due to L.Meissner.
|
|
!
|
|
! Submitted by Paul Thomas pault@gcc.gnu.org
|
|
!
|
|
module Max_Loc_Mod
|
|
implicit none
|
|
interface Max_Location
|
|
module procedure I_Max_Loc
|
|
end interface
|
|
contains
|
|
function I_Max_Loc (Vector) result(Ans)
|
|
integer, intent (in), dimension(:) :: Vector
|
|
integer, dimension(1) :: Ans
|
|
Ans = maxloc(Vector)
|
|
return
|
|
end function I_Max_Loc
|
|
end module Max_Loc_Mod
|
|
program module_interface
|
|
use Max_Loc_Mod
|
|
implicit none
|
|
integer :: Vector (7)
|
|
Vector = (/1,6,3,5,19,1,2/)
|
|
call Selection_Sort (Vector)
|
|
contains
|
|
subroutine Selection_Sort (Unsorted)
|
|
integer, intent (in), dimension(:) :: Unsorted
|
|
integer, dimension (1) :: N
|
|
N = Max_Location (Unsorted)
|
|
if (N(1).ne.5) call abort ()
|
|
return
|
|
end subroutine Selection_Sort
|
|
end program module_interface
|
|
|
|
! { dg-final { cleanup-modules "max_loc_mod" } }
|