I've committed a testcase for PR fortran/67982 to trunk.
Dominique
Index: gcc/testsuite/gfortran.dg/warn_unused_function_3.f90
===================================================================
--- gcc/testsuite/gfortran.dg/warn_unused_function_3.f90 (nonexistent)
+++ gcc/testsuite/gfortran.dg/warn_unused_function_3.f90 (working copy)
@@ -0,0 +1,35 @@
+! { dg-do compile }
+! { dg-options "-Wunused-function" }
+!
+! PR 67982: Bogus -Wunused-function warning with contained function
+!
+! Contributed by Joost VandeVondele <Joost dot VandeVondele at mat dot ethz
dot ch>
+
+MODULE base
+ INTERFACE
+ SUBROUTINE bar_int()
+ END SUBROUTINE
+ END INTERFACE
+ PUBLIC hook
+ PRIVATE
+ PROCEDURE(bar_int), POINTER :: hook=>NULL()
+END MODULE base
+
+MODULE foo
+ USE base, ONLY: hook
+ PUBLIC init
+ PRIVATE
+CONTAINS
+ SUBROUTINE init()
+ hook=>bar
+ END SUBROUTINE init
+ SUBROUTINE bar()
+ WRITE(6,*) "In bar"
+ END SUBROUTINE
+END MODULE
+
+USE foo, ONLY: init
+USE base, ONLY: hook
+CALL init()
+CALL hook()
+END