diff options
author | Mikael Morin <mikael@gcc.gnu.org> | 2015-08-19 14:47:23 +0000 |
---|---|---|
committer | Mikael Morin <mikael@gcc.gnu.org> | 2015-08-19 14:47:23 +0000 |
commit | ea0daf5f374f765891ab8ab9e6652bdf9746d34c (patch) | |
tree | 3bd9db911a089ea5d56f779017090e9c11973927 /gcc | |
parent | 255520e020ed9a5178b04ec006bfbf0915148315 (diff) | |
download | gcc-ea0daf5f374f765891ab8ab9e6652bdf9746d34c.zip gcc-ea0daf5f374f765891ab8ab9e6652bdf9746d34c.tar.gz gcc-ea0daf5f374f765891ab8ab9e6652bdf9746d34c.tar.bz2 |
Forward-port test generic_31.f90 from the 5 branch.
gcc/testsuite/
PR fortran/66929
* gfortran.dg/generic_31.f90: New.
From-SVN: r227010
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/testsuite/ChangeLog | 5 | ||||
-rw-r--r-- | gcc/testsuite/gfortran.dg/generic_31.f90 | 35 |
2 files changed, 40 insertions, 0 deletions
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index e04bb1b..e162dd2 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,8 @@ +2015-08-19 Mikael Morin <mikael@gcc.gnu.org> + + PR fortran/66929 + * gfortran.dg/generic_31.f90: New. + 2015-08-19 Marek Polacek <polacek@redhat.com> PR middle-end/67133 diff --git a/gcc/testsuite/gfortran.dg/generic_31.f90 b/gcc/testsuite/gfortran.dg/generic_31.f90 new file mode 100644 index 0000000..2c0d029 --- /dev/null +++ b/gcc/testsuite/gfortran.dg/generic_31.f90 @@ -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 |