blob: 6d800ee6fdcbb7fb6212e7186d8c70a1ce230ef0 [file] [log] [blame]
! { dg-do run }
! Tests the fix for PR34471 in which function KINDs that were
! USE associated would cause an error.
!
! This only needs to be run once.
! { dg-options "-O2" }
!
! Contributed by Tobias Burnus <burnus@gcc.gnu.org>
!
module m1
integer, parameter :: i1 = 1, i2 = 2
end module m1
module m2
integer, parameter :: i1 = 8
end module m2
integer(i1) function three()
use m1, only: i2
use m2 ! This provides the function kind
three = i1
if(three /= kind(three)) STOP 1
end function three
! At one stage during the development of the patch, this started failing
! but was not tested in gfortran.dg. */
real (kind(0d0)) function foo ()
foo = real (kind (foo))
end function
program main
implicit none
interface
integer(8) function three()
end function three
end interface
integer, parameter :: i1 = 4
integer :: i
real (kind(0d0)) foo
i = one()
i = two()
if(three() /= 8) STOP 2
if (int(foo()) /= 8) STOP 3
contains
integer(i1) function one() ! Host associated kind
if (kind(one) /= 4) STOP 4
one = 1
end function one
integer(i1) function two() ! Use associated kind
use m1, only: i2
use m2
if (kind(two) /= 8) STOP 5
two = 1
end function two
end program main