diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog
index 6467ca44af45714a2812ce174a9fd909a40bfde0..ab02e686fc71bb3af6c9f0ee9d29e12c4d87568b 100644
--- a/gcc/testsuite/ChangeLog
+++ b/gcc/testsuite/ChangeLog
@@ -1,3 +1,8 @@
+2008-03-15  Jerry DeLisle  <jvdelisle@gcc.gnu.org>
+
+	PR testsuite/35478
+	gfortran.dg/generic_16.f90: New test.
+
 2008-03-15  Hans-Peter Nilsson  <hp@axis.com>
 
 	PR middle-end/35595
diff --git a/gcc/testsuite/gfortran.dg/generic_16.f90 b/gcc/testsuite/gfortran.dg/generic_16.f90
new file mode 100644
index 0000000000000000000000000000000000000000..cb6e34df554e43e1fb16b893790a34a04f9588fa
--- /dev/null
+++ b/gcc/testsuite/gfortran.dg/generic_16.f90
@@ -0,0 +1,34 @@
+! { dg-do compile }
+! PR35478 internal compiler error: Segmentation fault
+MODULE auxiliary
+  IMPLICIT NONE
+  INTEGER, PARAMETER, PRIVATE :: dp = SELECTED_REAL_KIND(15)
+  INTERFACE median
+     MODULE PROCEDURE R_valmed, I_valmed, D_valmed
+  END INTERFACE
+  PUBLIC  :: median
+  PRIVATE :: R_valmed, I_valmed, D_valmed
+CONTAINS
+  RECURSIVE FUNCTION D_valmed (XDONT) RESULT (res_med)
+    Real (kind=dp), Dimension (:), Intent (In) :: XDONT
+    Real (kind=dp) :: res_med
+    res_med = 0.0d0
+  END FUNCTION D_valmed
+  RECURSIVE FUNCTION R_valmed (XDONT) RESULT (res_med)
+    Real, Dimension (:), Intent (In) :: XDONT
+    Real :: res_med
+    res_med = 0.0
+  END FUNCTION R_valmed
+  RECURSIVE FUNCTION I_valmed (XDONT) RESULT (res_med)
+    Integer, Dimension (:), Intent (In)  :: XDONT
+    Integer :: res_med
+    res_med = 0
+  END FUNCTION I_valmed
+END MODULE auxiliary
+PROGRAM main
+  USE auxiliary
+  IMPLICIT NONE
+  INTEGER, PARAMETER    :: dp = SELECTED_REAL_KIND(15)
+  REAL(kind=dp) :: rawData(2), data, work(3)
+  data = median(rawData, work) ! { dg-error "no specific function" }
+END PROGRAM main