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

Reply via email to