1! { dg-do compile } 2! { dg-options "-fcoarray=lib -fdump-tree-original" } 3! 4 implicit none 5 type t 6 end type t 7 class(t), allocatable :: y[:] 8 call bar() 9 call foo(y) 10contains 11 subroutine bar(x) 12 class(t), optional :: x[*] 13 end subroutine bar 14 subroutine foo(x) 15 class(t) :: x[*] 16 end subroutine foo 17end 18! { dg-final { scan-tree-dump-times "foo \\(struct __class_MAIN___T_0_1t & restrict x, void \\* restrict caf_token.., integer\\(kind=\[48\]\\) caf_offset..\\)" 1 "original" } } 19! { dg-final { scan-tree-dump-times "bar \\(struct __class_MAIN___T_0_1t \\* x, void \\* restrict caf_token.., integer\\(kind=\[48\]\\) caf_offset..\\)" 1 "original" } } 20! { dg-final { scan-tree-dump-times "bar \\(0B, 0B, 0\\);" 1 "original" } } 21! { dg-final { scan-tree-dump-times "foo \\(&class.., y._data.token, \\(integer\\(kind=\[48\]\\)\\) class..._data.data - \\(integer\\(kind=\[48\]\\)\\) y._data.data\\);" 1 "original" } } 22