1! { dg-do run }
2! PR 17612
3! We used to not determine the length of character-valued expressions
4! correctly, leading to a segfault.
5program prog
6  character(len=2), target :: c(4)
7  type pseudo_upf
8     character(len=2), pointer :: els(:)
9  end type pseudo_upf
10  type (pseudo_upf) :: p
11  type t
12    character(5) :: s(2)
13  end type
14  type (t) v
15  ! A full arrays.
16  c = (/"ab","cd","ef","gh"/)
17  call n(p)
18  if (any (c /= p%els)) call abort
19  ! An array section that needs a new array descriptor.
20  v%s(1) = "hello"
21  v%s(2) = "world"
22  call test (v%s)
23contains
24
25  subroutine n (upf)
26    type (pseudo_upf), intent(inout) :: upf
27    upf%els => c
28    return
29  end subroutine n
30
31  subroutine test(s)
32    character(len=*) :: s(:)
33    if ((len (s) .ne. 5) .or. (any (s .ne. (/"hello", "world"/)))) call abort
34  end subroutine
35end program
36
37
38