blob: fb91107bd9b8564a35b4442cfff72a6edc6d170f [file] [log] [blame]
! PR92482
! { dg-do compile }
!
! TS 29113
! C1255 (R1230) If proc-language-binding-spec is specified for a procedure,
! each dummy argument shall be an interoperable procedure (15.3.7)
! or a variable that is interoperable (15.3.5, 15.3.6), assumed shape,
! assumed rank, assumed type, of assumed character length, or has the
! ALLOCATABLE or POINTER attribute. If proc-language-binding-spec is
! specified for a function, the function result shall be an interoperable
! scalar variable.
module m
interface
! dummy is interoperable procedure
subroutine s1 (x) bind (c)
use ISO_C_BINDING
implicit none
interface
function x (a, b) bind (c)
use ISO_C_BINDING
integer(C_INT) :: a, b
integer(C_INT) :: x
end function
end interface
end subroutine
! dummy is interoperable variable
subroutine s2 (x) bind (c)
use ISO_C_BINDING
implicit none
integer(C_INT) :: x
end subroutine
! dummy is assumed-shape array variable
subroutine s3 (x) bind (c)
use ISO_C_BINDING
implicit none
integer(C_INT) :: x(:)
end subroutine
! dummy is an assumed-rank array variable
subroutine s4 (x) bind (c)
use ISO_C_BINDING
implicit none
integer(C_INT) :: x(..)
end subroutine
! dummy is assumed-type variable
subroutine s5 (x) bind (c)
use ISO_C_BINDING
implicit none
type(*) :: x
end subroutine
! dummy is assumed length character variable
subroutine s6 (x) bind (c)
use ISO_C_BINDING
implicit none
character(len=*) :: x
end subroutine
! dummy has allocatable or pointer attribute
subroutine s7 (x, y) bind (c)
use ISO_C_BINDING
implicit none
integer(C_INT), allocatable :: x
integer(C_INT), pointer :: y
end subroutine
! function result shall be an interoperable scalar variable
function f (x) bind (c)
use ISO_C_BINDING
implicit none
integer(C_INT) :: x
integer(C_INT) :: f
end function
end interface
end module