! { dg-do run } program main use iso_c_binding, only: c_ptr, c_loc, c_f_pointer implicit none integer, dimension(2,1,2), target :: table table = reshape ( (/ 1,2,-1,-2/), (/2,1,2/)) call set_table (c_loc (table)) contains subroutine set_table (cptr) type(c_ptr), intent(in) :: cptr integer, dimension(:,:,:), pointer :: table_tmp call c_f_pointer (cptr, table_tmp, (/2,1,2/)) if (any(table_tmp /= table)) call abort end subroutine set_table end program main