1! { dg-do run } 2! This tests the fix for PR16940, module interfaces to 3! contained functions caused ICEs. 4! This is a simplified version of the example in the PR 5! discussion, which was due to L.Meissner. 6! 7! Submitted by Paul Thomas pault@gcc.gnu.org 8! 9 module Max_Loc_Mod 10 implicit none 11 interface Max_Location 12 module procedure I_Max_Loc 13 end interface 14 contains 15 function I_Max_Loc (Vector) result(Ans) 16 integer, intent (in), dimension(:) :: Vector 17 integer, dimension(1) :: Ans 18 Ans = maxloc(Vector) 19 return 20 end function I_Max_Loc 21 end module Max_Loc_Mod 22 program module_interface 23 use Max_Loc_Mod 24 implicit none 25 integer :: Vector (7) 26 Vector = (/1,6,3,5,19,1,2/) 27 call Selection_Sort (Vector) 28 contains 29 subroutine Selection_Sort (Unsorted) 30 integer, intent (in), dimension(:) :: Unsorted 31 integer, dimension (1) :: N 32 N = Max_Location (Unsorted) 33 if (N(1).ne.5) STOP 1 34 return 35 end subroutine Selection_Sort 36 end program module_interface 37