From: "Dominique d'Humières" <dominiq@lps.ens.fr>
To: gfortran <fortran@gcc.gnu.org>
Cc: gcc-patches <gcc-patches@gcc.gnu.org>
Subject: [Patch fortran] PR32957 - C/Fortran interoperability and -fdefault-integer-8
Date: Sun, 25 Feb 2018 23:19:00 -0000 [thread overview]
Message-ID: <EAFCBA37-06B2-44ED-AB2F-BCB7AC166E96@lps.ens.fr> (raw)
[-- Attachment #1: Type: text/plain, Size: 584 bytes --]
Hi all,
I have noticed a recent interest to fix problems with -fdefault-integer-8. Please don’t forget to mark new PRs as blocking pr32770. I have also posted new results for the test suite.
I think it is a good time to submit the updated attached patch fixing some C/Fortran interoperability in the test suite (the variables exchanged between Fortran and C must not be changed by -fdefault-integer-8).
I have this patch in my working tree since a very long time and it has been applied before the new tests in pr32770.
OK for trunk? back port?
TIA
Dominique
[-- Attachment #2: patch-rega3 --]
[-- Type: application/octet-stream, Size: 8496 bytes --]
diff -up ../_clean/gcc/testsuite/gfortran.dg/c_f_pointer_shape_tests_2.f03 gcc/testsuite/gfortran.dg/c_f_pointer_shape_tests_2.f03
--- ../_clean/gcc/testsuite/gfortran.dg/c_f_pointer_shape_tests_2.f03 2018-02-18 00:40:40.000000000 +0100
+++ gcc/testsuite/gfortran.dg/c_f_pointer_shape_tests_2.f03 2018-02-18 11:08:56.000000000 +0100
@@ -12,7 +12,7 @@ contains
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
@@ -28,7 +28,7 @@ contains
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
@@ -46,7 +46,7 @@ contains
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
@@ -61,7 +61,7 @@ contains
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
@@ -76,7 +76,7 @@ contains
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
@@ -91,7 +91,7 @@ contains
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
diff -up ../_clean/gcc/testsuite/gfortran.dg/c_f_pointer_shape_tests_4.f03 gcc/testsuite/gfortran.dg/c_f_pointer_shape_tests_4.f03
--- ../_clean/gcc/testsuite/gfortran.dg/c_f_pointer_shape_tests_4.f03 2018-02-18 00:40:34.000000000 +0100
+++ gcc/testsuite/gfortran.dg/c_f_pointer_shape_tests_4.f03 2018-02-18 11:08:48.000000000 +0100
@@ -12,7 +12,7 @@ contains
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
@@ -28,7 +28,7 @@ contains
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
@@ -47,7 +47,7 @@ contains
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
@@ -62,7 +62,7 @@ contains
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
@@ -77,7 +77,7 @@ contains
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
@@ -92,7 +92,7 @@ contains
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
diff -up ../_clean/gcc/testsuite/gfortran.dg/c_funloc_tests_3.f03 gcc/testsuite/gfortran.dg/c_funloc_tests_3.f03
--- ../_clean/gcc/testsuite/gfortran.dg/c_funloc_tests_3.f03 2012-05-15 13:41:59.000000000 +0200
+++ gcc/testsuite/gfortran.dg/c_funloc_tests_3.f03 2012-05-16 00:31:51.000000000 +0200
@@ -9,11 +9,11 @@ contains
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
@@ -29,7 +29,7 @@ program main
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
diff -up ../_clean/gcc/testsuite/gfortran.dg/c_loc_test.f90 gcc/testsuite/gfortran.dg/c_loc_test.f90
--- ../_clean/gcc/testsuite/gfortran.dg/c_loc_test.f90 2012-05-15 13:41:52.000000000 +0200
+++ gcc/testsuite/gfortran.dg/c_loc_test.f90 2012-05-16 00:31:47.000000000 +0200
@@ -7,7 +7,7 @@ contains
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)
@@ -16,8 +16,8 @@ contains
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
diff -up ../_clean/gcc/testsuite/gfortran.dg/c_loc_tests_2.f03 gcc/testsuite/gfortran.dg/c_loc_tests_2.f03
--- ../_clean/gcc/testsuite/gfortran.dg/c_loc_tests_2.f03 2018-02-18 00:40:36.000000000 +0100
+++ gcc/testsuite/gfortran.dg/c_loc_tests_2.f03 2018-02-18 11:08:52.000000000 +0100
@@ -44,13 +44,13 @@ contains
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
diff -up ../_clean/gcc/testsuite/gfortran.dg/proc_decl_17.f90 gcc/testsuite/gfortran.dg/proc_decl_17.f90
--- ../_clean/gcc/testsuite/gfortran.dg/proc_decl_17.f90 2018-02-18 00:40:42.000000000 +0100
+++ gcc/testsuite/gfortran.dg/proc_decl_17.f90 2018-02-18 11:08:59.000000000 +0100
@@ -35,7 +35,8 @@ contains
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
@@ -55,7 +56,7 @@ program prog
use m
-integer :: i(4) = (/0,6,12,18/)
+integer(C_INT) :: i(4) = (/0,6,12,18/)
allocate(my_message(1:6))
diff -up ../_clean/gcc/testsuite/gfortran.dg/proc_ptr_8.f90 gcc/testsuite/gfortran.dg/proc_ptr_8.f90
--- ../_clean/gcc/testsuite/gfortran.dg/proc_ptr_8.f90 2018-02-18 00:40:41.000000000 +0100
+++ gcc/testsuite/gfortran.dg/proc_ptr_8.f90 2018-02-18 11:40:11.000000000 +0100
@@ -27,11 +27,11 @@ PROCEDURE(mytype), POINTER :: ptype,ptyp
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
next reply other threads:[~2018-02-25 23:19 UTC|newest]
Thread overview: 3+ messages / expand[flat|nested] mbox.gz Atom feed top
2018-02-25 23:19 Dominique d'Humières [this message]
2018-02-25 23:35 ` Thomas Koenig
2018-02-26 11:00 ` Dominique d'Humières
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=EAFCBA37-06B2-44ED-AB2F-BCB7AC166E96@lps.ens.fr \
--to=dominiq@lps.ens.fr \
--cc=fortran@gcc.gnu.org \
--cc=gcc-patches@gcc.gnu.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).