| ! { dg-do compile } |
| ! |
| ! PR fortran/48858 |
| ! PR fortran/55465 |
| ! |
| ! Seems to be regarded as valid, even if it is doubtful |
| ! |
| |
| |
| module m_odbc_if |
| implicit none |
| |
| interface sql_set_env_attr |
| function sql_set_env_attr_int( input_handle,attribute,value,length ) & |
| result(res) bind(C,name="SQLSetEnvAttr") |
| use, intrinsic :: iso_c_binding |
| implicit none |
| type(c_ptr), value :: input_handle |
| integer(c_int), value :: attribute |
| integer(c_int), value :: value ! <<<< HERE: int passed by value (int with ptr address) |
| integer(c_int), value :: length |
| integer(c_short) :: res |
| end function |
| function sql_set_env_attr_ptr( input_handle,attribute,value,length ) & |
| result(res) bind(C,name="SQLSetEnvAttr") |
| use, intrinsic :: iso_c_binding |
| implicit none |
| type(c_ptr), value :: input_handle |
| integer(c_int), value :: attribute |
| type(c_ptr), value :: value ! <<< HERE: "void *" (pointer address) |
| integer(c_int), value :: length |
| integer(c_short) :: res |
| end function |
| end interface |
| end module |
| |
| module graph_partitions |
| use,intrinsic :: iso_c_binding |
| |
| interface Cfun |
| subroutine cfunc1 (num, array) bind(c, name="Cfun") |
| import :: c_int |
| integer(c_int),value :: num |
| integer(c_int) :: array(*) ! <<< HERE: int[] |
| end subroutine cfunc1 |
| |
| subroutine cfunf2 (num, array) bind(c, name="Cfun") |
| import :: c_int, c_ptr |
| integer(c_int),value :: num |
| type(c_ptr),value :: array ! <<< HERE: void* |
| end subroutine cfunf2 |
| end interface |
| end module graph_partitions |
| |
| program test |
| use graph_partitions |
| integer(c_int) :: a(100) |
| |
| call Cfun (1, a) |
| call Cfun (2, C_NULL_PTR) |
| end program test |