Hello,
I have forward-ported the test that justified backport of the pr66929
patch on the 5 branch:
https://gcc.gnu.org/r227010
Mikael
Index: gcc/testsuite/gfortran.dg/generic_31.f90
===================================================================
--- gcc/testsuite/gfortran.dg/generic_31.f90 (révision 0)
+++ gcc/testsuite/gfortran.dg/generic_31.f90 (révision 227010)
@@ -0,0 +1,35 @@
+! { dg-do run }
+!
+! PR fortran/66929
+! Check that the specific FIRST symbol is used for the call to FOO,
+! so that the J argument is not assumed to be present
+
+module m
+ interface foo
+ module procedure first
+ end interface foo
+contains
+ elemental function bar(j) result(r)
+ integer, intent(in), optional :: j
+ integer :: r, s(2)
+ ! We used to have NULL dereference here, in case of a missing J argument
+ s = foo(j, [3, 7])
+ r = sum(s)
+ end function bar
+ elemental function first(i, j) result(r)
+ integer, intent(in), optional :: i
+ integer, intent(in) :: j
+ integer :: r
+ if (present(i)) then
+ r = i
+ else
+ r = -5
+ end if
+ end function first
+end module m
+program p
+ use m
+ integer :: i
+ i = bar()
+ if (i /= -10) call abort
+end program p
Index: gcc/testsuite/ChangeLog
===================================================================
--- gcc/testsuite/ChangeLog (révision 227009)
+++ gcc/testsuite/ChangeLog (révision 227010)
@@ -1,3 +1,8 @@
+2015-08-19 Mikael Morin <mik...@gcc.gnu.org>
+
+ PR fortran/66929
+ * gfortran.dg/generic_31.f90: New.
+
2015-08-19 Marek Polacek <pola...@redhat.com>
PR middle-end/67133