gcc/fortran/
[official-gcc.git] / gcc / testsuite / gfortran.dg / c_loc_tests_16.f90
blob55e8d00fa9cba1260c01afcb41c3c2c17639d558
1 ! { dg-do compile }
2 ! { dg-options "-fcoarray=single -std=f2008" }
3 ! PR 38536 - array sections as arguments to c_loc are illegal.
4 use iso_c_binding
5 type, bind(c) :: t1
6 integer(c_int) :: i(5)
7 end type t1
8 type, bind(c):: t2
9 type(t1) :: t(5)
10 end type t2
11 type, bind(c) :: t3
12 type(t1) :: t(5,5)
13 end type t3
15 type(t2), target :: tt
16 type(t3), target :: ttt
17 integer(c_int), target :: n(3)
18 integer(c_int), target :: x[*]
19 type(C_PTR) :: p
21 p = c_loc(tt%t%i(1))
22 p = c_loc(n(1:2)) ! OK: interop type + contiguous
23 p = c_loc(ttt%t(5,1:2)%i(1)) ! FIXME: Noncontiguous (invalid) - compile-time testable
24 p = c_loc(x[1]) ! { dg-error "shall not be coindexed" }
25 end