+2018-02-26 Dominique d'Humieres <dominiq@gcc.gnu.org>
+
+ PR fortran/32957
+ * gfortran.dg/c_f_pointer_shape_tests_2.f03: Use explicit KIND c_int.
+ * gfortran.dg/c_f_pointer_shape_tests_4.f03: Likewise.
+ * gfortran.dg/c_funloc_tests_3.f03: Likewise.
+ * gfortran.dg/c_loc_test.f90: Likewise.
+ * gfortran.dg/c_loc_tests_2.f03: Likewise.
+ * gfortran.dg/proc_decl_17.f90: Likewise.
+ * gfortran.dg/proc_ptr_8.f90: Likewise.
+
2018-02-26 Ramana Radhakrishnan <ramana.radhakrishnan@arm.com>
PR target/84521
use, intrinsic :: iso_c_binding
type(c_ptr), value :: cPtr
integer(c_int), value :: num_elems
- integer, dimension(:), pointer :: myArrayPtr
+ integer(c_int), dimension(:), pointer :: myArrayPtr
integer(c_long_long), dimension(1) :: shape
integer :: i
type(c_ptr), value :: cPtr
integer(c_int), value :: num_rows
integer(c_int), value :: num_cols
- integer, dimension(:,:), pointer :: myArrayPtr
+ integer(c_int), dimension(:,:), pointer :: myArrayPtr
integer(c_long_long), dimension(2) :: shape
integer :: i,j
use, intrinsic :: iso_c_binding
type(c_ptr), value :: cPtr
integer(c_int), value :: num_elems
- integer, dimension(:), pointer :: myArrayPtr
+ integer(c_int), dimension(:), pointer :: myArrayPtr
integer(c_long), dimension(1) :: shape
integer :: i
use, intrinsic :: iso_c_binding
type(c_ptr), value :: cPtr
integer(c_int), value :: num_elems
- integer, dimension(:), pointer :: myArrayPtr
+ integer(c_int), dimension(:), pointer :: myArrayPtr
integer(c_int), dimension(1) :: shape
integer :: i
use, intrinsic :: iso_c_binding
type(c_ptr), value :: cPtr
integer(c_int), value :: num_elems
- integer, dimension(:), pointer :: myArrayPtr
+ integer(c_int), dimension(:), pointer :: myArrayPtr
integer(c_short), dimension(1) :: shape
integer :: i
use, intrinsic :: iso_c_binding
type(c_ptr), value :: cPtr
integer(c_int), value :: num_elems
- integer, dimension(:), pointer :: myArrayPtr
+ integer(c_int), dimension(:), pointer :: myArrayPtr
integer(c_int), dimension(1) :: shape1
integer(c_long_long), dimension(1) :: shape2
integer :: i
use, intrinsic :: iso_c_binding
type(c_ptr), value :: cPtr
integer(c_int), value :: num_elems
- integer, dimension(:), pointer :: myArrayPtr
+ integer(c_int), dimension(:), pointer :: myArrayPtr
integer(c_long_long), dimension(1) :: shape
integer :: i
type(c_ptr), value :: cPtr
integer(c_int), value :: num_rows
integer(c_int), value :: num_cols
- integer, dimension(:,:), pointer :: myArrayPtr
+ integer(c_int), dimension(:,:), pointer :: myArrayPtr
integer(c_long_long), dimension(3) :: shape
integer :: i,j
use, intrinsic :: iso_c_binding
type(c_ptr), value :: cPtr
integer(c_int), value :: num_elems
- integer, dimension(:), pointer :: myArrayPtr
+ integer(c_int), dimension(:), pointer :: myArrayPtr
integer(c_long), dimension(1) :: shape
integer :: i
use, intrinsic :: iso_c_binding
type(c_ptr), value :: cPtr
integer(c_int), value :: num_elems
- integer, dimension(:), pointer :: myArrayPtr
+ integer(c_int), dimension(:), pointer :: myArrayPtr
integer(c_int), dimension(1) :: shape
integer :: i
use, intrinsic :: iso_c_binding
type(c_ptr), value :: cPtr
integer(c_int), value :: num_elems
- integer, dimension(:), pointer :: myArrayPtr
+ integer(c_int), dimension(:), pointer :: myArrayPtr
integer(c_short), dimension(1) :: shape
integer :: i
use, intrinsic :: iso_c_binding
type(c_ptr), value :: cPtr
integer(c_int), value :: num_elems
- integer, dimension(:), pointer :: myArrayPtr
+ integer(c_int), dimension(:), pointer :: myArrayPtr
integer(c_int), dimension(1) :: shape1
integer(c_long_long), dimension(1) :: shape2
integer :: i
use iso_c_binding, only: c_funptr, c_int
integer(c_int) :: ffunc
integer(c_int), value :: j
- ffunc = -17*j
+ ffunc = -17_c_int*j
end function ffunc
end module c_funloc_tests_3
program main
- use iso_c_binding, only: c_funptr, c_funloc
+ use iso_c_binding, only: c_funptr, c_funloc, c_int
use c_funloc_tests_3, only: ffunc
implicit none
interface
end interface
type(c_funptr) :: p
p = returnFunc()
- call callFunc(p, 13,3*13)
+ call callFunc(p, 13_c_int, 3_c_int*13_c_int)
p = c_funloc(ffunc)
- call callFunc(p, 21,-17*21)
+ call callFunc(p, 21_c_int, -17_c_int*21_c_int)
end program main
subroutine test0() bind(c)
use, intrinsic :: iso_c_binding
implicit none
- integer, target :: x
+ integer(c_int), target :: x
type(c_ptr) :: my_c_ptr
interface
subroutine test_address(x, expected_value) bind(c)
integer(c_int), value :: expected_value
end subroutine test_address
end interface
- x = 100
+ x = 100_c_int
my_c_ptr = c_loc(x)
- call test_address(my_c_ptr, 100)
+ call test_address(my_c_ptr, 100_c_int)
end subroutine test0
end module c_loc_test
end subroutine test0
subroutine test1() bind(c)
- integer, target, dimension(100) :: int_array_tar
+ integer(c_int), target, dimension(100) :: int_array_tar
type(c_ptr) :: my_c_ptr_1 = c_null_ptr
type(c_ptr) :: my_c_ptr_2 = c_null_ptr
- int_array_tar = 100
+ int_array_tar = 100_c_int
my_c_ptr_1 = c_loc(int_array_tar)
- if(test_array_address(my_c_ptr_1, 100) .ne. 1) then
+ if(test_array_address(my_c_ptr_1, 100_c_int) .ne. 1) then
STOP 3
end if
end subroutine test1
end function
subroutine check(p,a)
- integer a(:)
+ use ISO_C_BINDING
+ integer(C_INT) a(:)
procedure(abs_fun) :: p
character(size(my_message),C_CHAR) :: c(size(a))
integer k,l,m
use m
-integer :: i(4) = (/0,6,12,18/)
+integer(C_INT) :: i(4) = (/0,6,12,18/)
allocate(my_message(1:6))
CALL init()
CALL C_F_PROCPOINTER(funpointer,ptype)
-if (ptype(3) /= 9) STOP 1
+if (ptype(3_c_int) /= 9) STOP 1
! the stuff below was added with PR 42072
call setpointer(ptype2)
-if (ptype2(4) /= 12) STOP 2
+if (ptype2(4_c_int) /= 12) STOP 2
contains