!RUN: %flang_fc1 -fdebug-dump-symbols %s | FileCheck %s !REQUIRES: target={{.+}}-aix{{.*}} ! Size and alignment of bind(c) derived types subroutine s1() use, intrinsic :: iso_c_binding type, bind(c) :: dt1 character(c_char) :: x1 !CHECK: x1 size=1 offset=0: real(c_double) :: x2 !CHECK: x2 size=8 offset=4: end type type, bind(c) :: dt2 character(c_char) :: x1(9) !CHECK: x1 size=9 offset=0: real(c_double) :: x2 !CHECK: x2 size=8 offset=12: end type type, bind(c) :: dt3 integer(c_short) :: x1 !CHECK: x1 size=2 offset=0: real(c_double) :: x2 !CHECK: x2 size=8 offset=4: end type type, bind(c) :: dt4 integer(c_int) :: x1 !CHECK: x1 size=4 offset=0: real(c_double) :: x2 !CHECK: x2 size=8 offset=4: end type type, bind(c) :: dt5 real(c_double) :: x1 !CHECK: x1 size=8 offset=0: real(c_double) :: x2 !CHECK: x2 size=8 offset=8: end type type, bind(c) :: dt6 integer(c_long) :: x1 !CHECK: x1 size=8 offset=0: character(c_char) :: x2 !CHECK: x2 size=1 offset=8: real(c_double) :: x3 !CHECK: x3 size=8 offset=12: end type type, bind(c) :: dt7 integer(c_long) :: x1 !CHECK: x1 size=8 offset=0: integer(c_long) :: x2 !CHECK: x2 size=8 offset=8: character(c_char) :: x3 !CHECK: x3 size=1 offset=16: real(c_double) :: x4 !CHECK: x4 size=8 offset=20: end type type, bind(c) :: dt8 character(c_char) :: x1 !CHECK: x1 size=1 offset=0: complex(c_double_complex) :: x2 !CHECK: x2 size=16 offset=4: end type end subroutine subroutine s2() use, intrinsic :: iso_c_binding type, bind(c) :: dt10 character(c_char) :: x1 real(c_double) :: x2 end type type, bind(c) :: dt11 type(dt10) :: y1 !CHECK: y1 size=12 offset=0: real(c_double) :: y2 !CHECK: y2 size=8 offset=12: end type type, bind(c) :: dt12 character(c_char) :: y1 !CHECK: y1 size=1 offset=0: type(dt10) :: y2 !CHECK: y2 size=12 offset=4: character(c_char) :: y3 !CHECK: y3 size=1 offset=16: end type type, bind(c) :: dt13 integer(c_short) :: y1 !CHECK: y1 size=2 offset=0: type(dt10) :: y2 !CHECK: y2 size=12 offset=4: character(c_char) :: y3 !CHECK: y3 size=1 offset=16: end type type, bind(c) :: dt20 character(c_char) :: x1 integer(c_short) :: x2 end type type, bind(c) :: dt21 real(c_double) :: y1 !CHECK: y1 size=8 offset=0: type(dt20) :: y2 !CHECK: y2 size=4 offset=8: real(c_double) :: y3 !CHECK: y3 size=8 offset=12: end type type, bind(c) :: dt30 character(c_char) :: x1 character(c_char) :: x2 end type type, bind(c) :: dt31 integer(c_long) :: y1 !CHECK: y1 size=8 offset=0: type(dt30) :: y2 !CHECK: y2 size=2 offset=8: real(c_double) :: y3 !CHECK: y3 size=8 offset=12: end type type, bind(c) :: dt40 integer(c_short) :: x1 real(c_double) :: x2 end type type, bind(c) :: dt41 real(c_double) :: y1 !CHECK: y1 size=8 offset=0: type(dt40) :: y2 !CHECK: y2 size=12 offset=8: real(c_double) :: y3 !CHECK: y3 size=8 offset=20: end type type, bind(c) :: dt50 integer(c_short) :: x1 complex(c_double_complex) :: x2 end type type, bind(c) :: dt51 real(c_double) :: y1 !CHECK: y1 size=8 offset=0: type(dt50) :: y2 !CHECK: y2 size=20 offset=8: complex(c_double_complex) :: y3 !CHECK: y3 size=16 offset=28: end type end subroutine