https://gcc.gnu.org/bugzilla/show_bug.cgi?id=87277
Bug ID: 87277
Summary: [8/9 regression] Segfault on using array component of
class scalar pointer as an actual argument
Product: gcc
Version: 9.0
Status: UNCONFIRMED
Severity: normal
Priority: P3
Component: fortran
Assignee: pault at gcc dot gnu.org
Reporter: pault at gcc dot gnu.org
Target Milestone: ---
Reported by Andrew Baldwin on clf. This segfaults in 8- and 9-branches.
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)
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
The fix is regtesting and will be committed tonight as obvious.
Paul