blob: 3bb71c399189f2c2e0451af8650911c4b353c39c [file] [log] [blame]
! { dg-do run }
!
! Tests the fix for PR87277 - runtime segfault as indicated.
!
! Contributed by Andrew Baldwin on clf.
!
MODULE INTS_TYPE_MODULE
TYPE INTS_TYPE
INTEGER, ALLOCATABLE :: INTS(:)
END TYPE INTS_TYPE
CONTAINS
SUBROUTINE ALLOCATE_INTS_TYPE (IT_OBJ)
CLASS (INTS_TYPE), POINTER, INTENT (OUT) :: IT_OBJ
ALLOCATE (INTS_TYPE :: IT_OBJ)
SELECT TYPE (IT_OBJ)
TYPE IS (INTS_TYPE)
CALL ALLOCATE_ARRAY (IT_OBJ%INTS) ! Sefaulted at runtime here.
if (.not.allocated (IT_OBJ%INTS)) stop 1
if (any (IT_OBJ%INTS .ne. [1,2,3,4])) stop 2
END SELECT
RETURN
END SUBROUTINE ALLOCATE_INTS_TYPE
SUBROUTINE ALLOCATE_ARRAY (ALLOC_ARR)
INTEGER, ALLOCATABLE, INTENT (OUT) :: ALLOC_ARR(:)
INTEGER :: I
ALLOCATE (ALLOC_ARR(4))
DO I = 1, SIZE(ALLOC_ARR)
ALLOC_ARR(I) = I
END DO
RETURN
END SUBROUTINE ALLOCATE_ARRAY
END MODULE INTS_TYPE_MODULE
PROGRAM MFE
USE INTS_TYPE_MODULE
IMPLICIT NONE
CLASS (INTS_TYPE), POINTER :: IT_OBJ
CALL ALLOCATE_INTS_TYPE (IT_OBJ)
END PROGRAM MFE