1!RUN: %flang_fc1 -fdebug-dump-symbols %s | FileCheck %s 2 3! Size and alignment of derived types 4 5! Array of derived type with 64-bit alignment 6subroutine s1 7 type t1 8 real(8) :: a 9 real(4) :: b 10 end type 11 !CHECK: x1 size=12 offset=0: 12 !CHECK: y1 size=12 offset=16: 13 type(t1) :: x1, y1 14 !CHECK: z1 size=160 offset=32: 15 type(t1) :: z1(10) 16end 17 18! Like t1 but t2 does not need to be aligned on 64-bit boundary 19subroutine s2 20 type t2 21 real(4) :: a 22 real(4) :: b 23 real(4) :: c 24 end type 25 !CHECK: x2 size=12 offset=0: 26 !CHECK: y2 size=12 offset=12: 27 type(t2) :: x2, y2 28 !CHECK: z2 size=120 offset=24: 29 type(t2) :: z2(10) 30end 31 32! Parameterized derived types 33subroutine s3 34 type :: t(k, l) 35 integer, kind :: k 36 integer, len :: l 37 real(k) :: a3 38 integer(kind=k) :: b3 39 character(kind=k, len=8) :: c3 40 character(kind=k, len=l) :: d3 41 end type 42 !CHECK: DerivedType scope: size=48 alignment=8 instantiation of t(k=2_4,l=10_4) 43 !CHECK: a3 size=2 offset=0: 44 !CHECK: b3 size=2 offset=2: 45 !CHECK: c3 size=16 offset=4: 46 !CHECK: d3 size=24 offset=24: 47 type(t(2, 10)) :: x3 48 !CHECK: DerivedType scope: size=64 alignment=8 instantiation of t(k=4_4,l=20_4) 49 !CHECK: a3 size=4 offset=0: 50 !CHECK: b3 size=4 offset=4: 51 !CHECK: c3 size=32 offset=8: 52 !CHECK: d3 size=24 offset=40: 53 type(t(4, 20)) :: x4 54end 55