Commit f87f8897 by Dominique d'Humieres

re PR fortran/32957 (C/Fortran interoperability and -fdefault-integer-8)

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.

From-SVN: r257985
parent af3b4514
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> 2018-02-26 Ramana Radhakrishnan <ramana.radhakrishnan@arm.com>
PR target/84521 PR target/84521
......
...@@ -12,7 +12,7 @@ contains ...@@ -12,7 +12,7 @@ contains
use, intrinsic :: iso_c_binding use, intrinsic :: iso_c_binding
type(c_ptr), value :: cPtr type(c_ptr), value :: cPtr
integer(c_int), value :: num_elems integer(c_int), value :: num_elems
integer, dimension(:), pointer :: myArrayPtr integer(c_int), dimension(:), pointer :: myArrayPtr
integer(c_long_long), dimension(1) :: shape integer(c_long_long), dimension(1) :: shape
integer :: i integer :: i
...@@ -28,7 +28,7 @@ contains ...@@ -28,7 +28,7 @@ contains
type(c_ptr), value :: cPtr type(c_ptr), value :: cPtr
integer(c_int), value :: num_rows integer(c_int), value :: num_rows
integer(c_int), value :: num_cols integer(c_int), value :: num_cols
integer, dimension(:,:), pointer :: myArrayPtr integer(c_int), dimension(:,:), pointer :: myArrayPtr
integer(c_long_long), dimension(2) :: shape integer(c_long_long), dimension(2) :: shape
integer :: i,j integer :: i,j
...@@ -46,7 +46,7 @@ contains ...@@ -46,7 +46,7 @@ contains
use, intrinsic :: iso_c_binding use, intrinsic :: iso_c_binding
type(c_ptr), value :: cPtr type(c_ptr), value :: cPtr
integer(c_int), value :: num_elems integer(c_int), value :: num_elems
integer, dimension(:), pointer :: myArrayPtr integer(c_int), dimension(:), pointer :: myArrayPtr
integer(c_long), dimension(1) :: shape integer(c_long), dimension(1) :: shape
integer :: i integer :: i
...@@ -61,7 +61,7 @@ contains ...@@ -61,7 +61,7 @@ contains
use, intrinsic :: iso_c_binding use, intrinsic :: iso_c_binding
type(c_ptr), value :: cPtr type(c_ptr), value :: cPtr
integer(c_int), value :: num_elems integer(c_int), value :: num_elems
integer, dimension(:), pointer :: myArrayPtr integer(c_int), dimension(:), pointer :: myArrayPtr
integer(c_int), dimension(1) :: shape integer(c_int), dimension(1) :: shape
integer :: i integer :: i
...@@ -76,7 +76,7 @@ contains ...@@ -76,7 +76,7 @@ contains
use, intrinsic :: iso_c_binding use, intrinsic :: iso_c_binding
type(c_ptr), value :: cPtr type(c_ptr), value :: cPtr
integer(c_int), value :: num_elems integer(c_int), value :: num_elems
integer, dimension(:), pointer :: myArrayPtr integer(c_int), dimension(:), pointer :: myArrayPtr
integer(c_short), dimension(1) :: shape integer(c_short), dimension(1) :: shape
integer :: i integer :: i
...@@ -91,7 +91,7 @@ contains ...@@ -91,7 +91,7 @@ contains
use, intrinsic :: iso_c_binding use, intrinsic :: iso_c_binding
type(c_ptr), value :: cPtr type(c_ptr), value :: cPtr
integer(c_int), value :: num_elems integer(c_int), value :: num_elems
integer, dimension(:), pointer :: myArrayPtr integer(c_int), dimension(:), pointer :: myArrayPtr
integer(c_int), dimension(1) :: shape1 integer(c_int), dimension(1) :: shape1
integer(c_long_long), dimension(1) :: shape2 integer(c_long_long), dimension(1) :: shape2
integer :: i integer :: i
......
...@@ -12,7 +12,7 @@ contains ...@@ -12,7 +12,7 @@ contains
use, intrinsic :: iso_c_binding use, intrinsic :: iso_c_binding
type(c_ptr), value :: cPtr type(c_ptr), value :: cPtr
integer(c_int), value :: num_elems integer(c_int), value :: num_elems
integer, dimension(:), pointer :: myArrayPtr integer(c_int), dimension(:), pointer :: myArrayPtr
integer(c_long_long), dimension(1) :: shape integer(c_long_long), dimension(1) :: shape
integer :: i integer :: i
...@@ -28,7 +28,7 @@ contains ...@@ -28,7 +28,7 @@ contains
type(c_ptr), value :: cPtr type(c_ptr), value :: cPtr
integer(c_int), value :: num_rows integer(c_int), value :: num_rows
integer(c_int), value :: num_cols integer(c_int), value :: num_cols
integer, dimension(:,:), pointer :: myArrayPtr integer(c_int), dimension(:,:), pointer :: myArrayPtr
integer(c_long_long), dimension(3) :: shape integer(c_long_long), dimension(3) :: shape
integer :: i,j integer :: i,j
...@@ -47,7 +47,7 @@ contains ...@@ -47,7 +47,7 @@ contains
use, intrinsic :: iso_c_binding use, intrinsic :: iso_c_binding
type(c_ptr), value :: cPtr type(c_ptr), value :: cPtr
integer(c_int), value :: num_elems integer(c_int), value :: num_elems
integer, dimension(:), pointer :: myArrayPtr integer(c_int), dimension(:), pointer :: myArrayPtr
integer(c_long), dimension(1) :: shape integer(c_long), dimension(1) :: shape
integer :: i integer :: i
...@@ -62,7 +62,7 @@ contains ...@@ -62,7 +62,7 @@ contains
use, intrinsic :: iso_c_binding use, intrinsic :: iso_c_binding
type(c_ptr), value :: cPtr type(c_ptr), value :: cPtr
integer(c_int), value :: num_elems integer(c_int), value :: num_elems
integer, dimension(:), pointer :: myArrayPtr integer(c_int), dimension(:), pointer :: myArrayPtr
integer(c_int), dimension(1) :: shape integer(c_int), dimension(1) :: shape
integer :: i integer :: i
...@@ -77,7 +77,7 @@ contains ...@@ -77,7 +77,7 @@ contains
use, intrinsic :: iso_c_binding use, intrinsic :: iso_c_binding
type(c_ptr), value :: cPtr type(c_ptr), value :: cPtr
integer(c_int), value :: num_elems integer(c_int), value :: num_elems
integer, dimension(:), pointer :: myArrayPtr integer(c_int), dimension(:), pointer :: myArrayPtr
integer(c_short), dimension(1) :: shape integer(c_short), dimension(1) :: shape
integer :: i integer :: i
...@@ -92,7 +92,7 @@ contains ...@@ -92,7 +92,7 @@ contains
use, intrinsic :: iso_c_binding use, intrinsic :: iso_c_binding
type(c_ptr), value :: cPtr type(c_ptr), value :: cPtr
integer(c_int), value :: num_elems integer(c_int), value :: num_elems
integer, dimension(:), pointer :: myArrayPtr integer(c_int), dimension(:), pointer :: myArrayPtr
integer(c_int), dimension(1) :: shape1 integer(c_int), dimension(1) :: shape1
integer(c_long_long), dimension(1) :: shape2 integer(c_long_long), dimension(1) :: shape2
integer :: i integer :: i
......
...@@ -9,11 +9,11 @@ contains ...@@ -9,11 +9,11 @@ contains
use iso_c_binding, only: c_funptr, c_int use iso_c_binding, only: c_funptr, c_int
integer(c_int) :: ffunc integer(c_int) :: ffunc
integer(c_int), value :: j integer(c_int), value :: j
ffunc = -17*j ffunc = -17_c_int*j
end function ffunc end function ffunc
end module c_funloc_tests_3 end module c_funloc_tests_3
program main 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 use c_funloc_tests_3, only: ffunc
implicit none implicit none
interface interface
...@@ -29,7 +29,7 @@ program main ...@@ -29,7 +29,7 @@ program main
end interface end interface
type(c_funptr) :: p type(c_funptr) :: p
p = returnFunc() p = returnFunc()
call callFunc(p, 13,3*13) call callFunc(p, 13_c_int, 3_c_int*13_c_int)
p = c_funloc(ffunc) 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 end program main
...@@ -7,7 +7,7 @@ contains ...@@ -7,7 +7,7 @@ contains
subroutine test0() bind(c) subroutine test0() bind(c)
use, intrinsic :: iso_c_binding use, intrinsic :: iso_c_binding
implicit none implicit none
integer, target :: x integer(c_int), target :: x
type(c_ptr) :: my_c_ptr type(c_ptr) :: my_c_ptr
interface interface
subroutine test_address(x, expected_value) bind(c) subroutine test_address(x, expected_value) bind(c)
...@@ -16,8 +16,8 @@ contains ...@@ -16,8 +16,8 @@ contains
integer(c_int), value :: expected_value integer(c_int), value :: expected_value
end subroutine test_address end subroutine test_address
end interface end interface
x = 100 x = 100_c_int
my_c_ptr = c_loc(x) 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 subroutine test0
end module c_loc_test end module c_loc_test
...@@ -44,13 +44,13 @@ contains ...@@ -44,13 +44,13 @@ contains
end subroutine test0 end subroutine test0
subroutine test1() bind(c) 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_1 = c_null_ptr
type(c_ptr) :: my_c_ptr_2 = 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) 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 STOP 3
end if end if
end subroutine test1 end subroutine test1
......
...@@ -35,7 +35,8 @@ contains ...@@ -35,7 +35,8 @@ contains
end function end function
subroutine check(p,a) subroutine check(p,a)
integer a(:) use ISO_C_BINDING
integer(C_INT) a(:)
procedure(abs_fun) :: p procedure(abs_fun) :: p
character(size(my_message),C_CHAR) :: c(size(a)) character(size(my_message),C_CHAR) :: c(size(a))
integer k,l,m integer k,l,m
...@@ -55,7 +56,7 @@ program prog ...@@ -55,7 +56,7 @@ program prog
use m use m
integer :: i(4) = (/0,6,12,18/) integer(C_INT) :: i(4) = (/0,6,12,18/)
allocate(my_message(1:6)) allocate(my_message(1:6))
......
...@@ -27,11 +27,11 @@ PROCEDURE(mytype), POINTER :: ptype,ptype2 ...@@ -27,11 +27,11 @@ PROCEDURE(mytype), POINTER :: ptype,ptype2
CALL init() CALL init()
CALL C_F_PROCPOINTER(funpointer,ptype) 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 ! the stuff below was added with PR 42072
call setpointer(ptype2) call setpointer(ptype2)
if (ptype2(4) /= 12) STOP 2 if (ptype2(4_c_int) /= 12) STOP 2
contains contains
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment