! { dg-do compile } ! { dg-options "-std=f2003" } subroutine foo(a,b,c,d) use iso_c_binding, only: c_loc, c_ptr implicit none real, intent(in), target :: a(:) real, intent(in), target :: b(5) real, intent(in), target :: c(*) real, intent(in), target, allocatable :: d(:) type(c_ptr) :: ptr ptr = C_LOC(b) ptr = C_LOC(c) ptr = C_LOC(d) ptr = C_LOC(a) ! { dg-error "Fortran 2008: Array of interoperable type at .1. to C_LOC which is nonallocatable and neither assumed size nor explicit size" } end subroutine foo