1! { dg-do compile } 2! { dg-options "-finit-derived -finit-integer=42 -finit-real=inf -finit-logical=true -finit-character=32 -fdump-tree-original" } 3! 4! Make sure -finit-derived initializes components of local derived type 5! variables according to other -finit-* flags. 6! 7 8subroutine dummy(i1,r1,c1,l1,i2,r2,c2,l2) 9 implicit none 10 integer, intent(in) :: i1 11 real, intent(in) :: r1 12 character, intent(in) :: c1 13 logical, intent(in) :: l1 14 integer, intent(out) :: i2 15 real, intent(out) :: r2 16 character, intent(out) :: c2 17 logical, intent(out) :: l2 18end subroutine 19 20type t2 21 integer i2 22 real r2 23 character c2 24 logical l2 25end type 26 27type t1 28 logical l1 29 real r1 30 character c1 31 integer i1 32 type (t2) y 33end type 34 35type (t1) :: x 36 37call dummy (x%i1, x%r1, x%c1, x%l1, x%y%i2, x%y%r2, x%y%c2, x%y%l2) 38 39end 40 41! We expect to see each component initialized exactly once in MAIN. 42! NB. the "once" qualifier also tests that the dummy variables aren't 43! given an extraneous initializer. 44! { dg-final { scan-tree-dump-times "i1= *42" 1 "original" } } 45! { dg-final { scan-tree-dump-times "r1= *\[iI]nf" 1 "original" } } 46! { dg-final { scan-tree-dump-times "c1= *\" \"" 1 "original" } } 47! { dg-final { scan-tree-dump-times "l1= *1" 1 "original" } } 48! { dg-final { scan-tree-dump-times "i2= *42" 1 "original" } } 49! { dg-final { scan-tree-dump-times "r2= *\[iI]nf" 1 "original" } } 50! { dg-final { scan-tree-dump-times "c2= *\" \"" 1 "original" } } 51! { dg-final { scan-tree-dump-times "l2= *1" 1 "original" } } 52