1use iso_c_binding
2implicit none
3
4type, bind(C) :: mytype1
5  integer(c_int) :: x
6  real(c_float)    :: y
7end type mytype1
8
9type mytype2
10  sequence
11  integer :: x
12  real    :: y
13end type mytype2
14
15type mytype3
16  integer :: x
17  real    :: y
18end type mytype3
19
20type mytype4
21  sequence
22  integer, allocatable, dimension(:) :: x
23end type mytype4
24
25type mytype5
26  sequence
27  integer, pointer :: x
28  integer :: y
29end type mytype5
30
31type mytype6
32  sequence
33  type(mytype5) :: t
34end type mytype6
35
36type mytype7
37  sequence
38  type(mytype4) :: t
39end type mytype7
40
41common /a/ t1
42common /b/ t2
43common /c/ t3  ! { dg-error "has neither the SEQUENCE nor the BIND.C. attribute" }
44common /d/ t4  ! { dg-error "has an ultimate component that is allocatable" }
45common /e/ t5
46common /f/ t6
47common /f/ t7  ! { dg-error "has an ultimate component that is allocatable" }
48type(mytype1) :: t1
49type(mytype2) :: t2
50type(mytype3) :: t3
51type(mytype4) :: t4
52type(mytype5) :: t5
53type(mytype6) :: t6
54type(mytype7) :: t7
55end
56