| ! { dg-do run } |
| ! { dg-additional-sources ISO_Fortran_binding_3.c } |
| ! |
| ! Test the fix for PR88929. |
| ! |
| integer, dimension (:,:), allocatable :: actual |
| integer, dimension(2,2) :: src = reshape ([1,2,3,4], [2,2]) |
| |
| allocate (actual, source = src) |
| |
| ier = test1 (actual) |
| if (ier .ne. 0) stop 1 |
| if (any (actual .ne. src + 1)) stop 2 |
| |
| contains |
| |
| function test1 (arg) RESULT(err) |
| USE, INTRINSIC :: ISO_C_BINDING |
| INTEGER(C_INT) :: err |
| type(*), dimension(..), intent(inout) :: arg |
| interface |
| function test_c (a) BIND(C, NAME="c_test") RESULT(err) |
| USE, INTRINSIC :: ISO_C_BINDING |
| type(*), dimension(..), intent(inout) :: a |
| INTEGER(C_INT) :: err |
| end function |
| end interface |
| |
| err = test_c (arg) ! This used to ICE |
| |
| end function test1 |
| end |