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