1! { dg-do run }
2!
3! Tests the fix for PR87277 - runtime segfault as indicated.
4!
5! Contributed by Andrew Baldwin on clf.
6!
7      MODULE INTS_TYPE_MODULE
8        TYPE INTS_TYPE
9          INTEGER, ALLOCATABLE :: INTS(:)
10        END TYPE INTS_TYPE
11      CONTAINS
12        SUBROUTINE ALLOCATE_INTS_TYPE (IT_OBJ)
13          CLASS (INTS_TYPE), POINTER, INTENT (OUT) :: IT_OBJ
14
15          ALLOCATE (INTS_TYPE :: IT_OBJ)
16
17          SELECT TYPE (IT_OBJ)
18          TYPE IS (INTS_TYPE)
19            CALL ALLOCATE_ARRAY (IT_OBJ%INTS) ! Sefaulted at runtime here.
20            if (.not.allocated (IT_OBJ%INTS)) stop 1
21            if (any (IT_OBJ%INTS .ne. [1,2,3,4])) stop 2
22          END SELECT
23
24          RETURN
25        END SUBROUTINE ALLOCATE_INTS_TYPE
26
27        SUBROUTINE ALLOCATE_ARRAY (ALLOC_ARR)
28          INTEGER, ALLOCATABLE, INTENT (OUT) :: ALLOC_ARR(:)
29          INTEGER :: I
30
31          ALLOCATE (ALLOC_ARR(4))
32
33          DO I = 1, SIZE(ALLOC_ARR)
34            ALLOC_ARR(I) = I
35          END DO
36
37          RETURN
38        END SUBROUTINE ALLOCATE_ARRAY
39      END MODULE INTS_TYPE_MODULE
40
41      PROGRAM MFE
42        USE INTS_TYPE_MODULE
43        IMPLICIT NONE
44
45        CLASS (INTS_TYPE), POINTER :: IT_OBJ
46
47        CALL ALLOCATE_INTS_TYPE (IT_OBJ)
48      END PROGRAM MFE
49