blob: 3917b9d3001de1e9ca8157f20eb2aaf344dede53 [file] [log] [blame]
! { dg-do compile }
! { dg-options "-std=f2008" }
!
! PR fortran/48858
! PR fortran/48820
!
! OPTIONAL + BIND(C) is allowed since TS 29113
!
! VALID
subroutine sub(z) bind(C)
use iso_c_binding
integer(c_int), value :: z
end subroutine sub
! VALID since TS29113
subroutine sub2(z) bind(C) ! { dg-error "with OPTIONAL attribute in procedure" }
use iso_c_binding
integer(c_int), optional :: z
end subroutine sub2
! VALID since TS29113
subroutine sub2a(z) bind(C) ! { dg-error "with OPTIONAL attribute in procedure" }
use iso_c_binding
integer(c_int) :: z
optional :: z
end subroutine sub2a
! VALID since TS29113
subroutine sub2b(z) bind(C) ! { dg-error "with OPTIONAL attribute in procedure" }
use iso_c_binding
optional :: z
integer(c_int) :: z
end subroutine sub2b
! Invalid
subroutine sub3(z) bind(C) ! { dg-error "cannot have both the OPTIONAL and the VALUE attribute" }
use iso_c_binding
integer(c_int), value, optional :: z
end subroutine sub3
! Invalid
subroutine sub3a(z) bind(C) ! { dg-error "cannot have both the OPTIONAL and the VALUE attribute" }
use iso_c_binding
integer(c_int) :: z
optional :: z
value :: z
end subroutine sub3a
! Invalid
subroutine sub3b(z) bind(C) ! { dg-error "cannot have both the OPTIONAL and the VALUE attribute" }
use iso_c_binding
optional :: z
value :: z
integer(c_int) :: z
end subroutine sub3b
! Invalid
subroutine sub3c(z) bind(C) ! { dg-error "cannot have both the OPTIONAL and the VALUE attribute" }
use iso_c_binding
value :: z
integer(c_int) :: z
optional :: z
end subroutine sub3c