1! { dg-do compile }
2! Tests the fix for PR29387, in which array valued arguments of
3! LEN and ASSOCIATED would cause an ICE.
4!
5! Contributed by Francois-Xavier Coudert  <fxcoudert@gcc.gnu.org>
6!
7  integer  :: ans
8  TYPE T1
9    INTEGER, POINTER :: I=>NULL()
10  END TYPE T1
11  type(T1), pointer :: tar(:)
12
13  character(20) res
14
15  j = 10
16  PRINT *, LEN(SUB(8)), ans
17  PRINT *, LEN(SUB(j)), ans
18!  print *, len(SUB(j + 2)//"a"), ans   ! This still fails (no charlen).
19  print *, len(bar(2)), ans
20
21  IF(.NOT.ASSOCIATED(F1(10))) CALL ABORT()
22  deallocate (tar)
23
24CONTAINS
25
26  FUNCTION SUB(I)
27    CHARACTER(LEN=I) :: SUB(1)
28    ans = LEN(SUB(1))
29    SUB = ""
30  END FUNCTION
31
32  FUNCTION BAR(I)
33    CHARACTER(LEN=I*10) :: BAR(1)
34    ans = LEN(BAR)
35    BAR = ""
36  END FUNCTION
37
38  FUNCTION F1(I) RESULT(R)
39   TYPE(T1), DIMENSION(:), POINTER :: R
40   INTEGER :: I
41   ALLOCATE(tar(I))
42   R => tar
43  END FUNCTION F1
44END
45