50 lines
999 B
Fortran
50 lines
999 B
Fortran
! { dg-do compile }
|
|
! Tests the fix for PR36366 a regression in which the order of USE statements
|
|
! in 'test2' would cause the result of 'test1' not to have a reference to
|
|
! the derived type 'inner'.
|
|
!
|
|
! Contributed by Jakub Jelinek <jakub@gcc.gnu.org>
|
|
!
|
|
MODULE types
|
|
IMPLICIT NONE
|
|
TYPE :: inner
|
|
INTEGER, POINTER :: i(:)
|
|
END TYPE inner
|
|
|
|
TYPE :: outer
|
|
TYPE(inner), POINTER :: inr(:)
|
|
END TYPE outer
|
|
END MODULE types
|
|
|
|
MODULE mymod
|
|
IMPLICIT NONE
|
|
CONTAINS
|
|
FUNCTION test1()
|
|
USE types
|
|
IMPLICIT NONE
|
|
TYPE(outer), POINTER :: test1
|
|
NULLIFY(test1)
|
|
END FUNCTION test1
|
|
END MODULE mymod
|
|
|
|
MODULE test
|
|
IMPLICIT NONE
|
|
CONTAINS
|
|
|
|
SUBROUTINE test2(a)
|
|
USE mymod
|
|
USE types
|
|
IMPLICIT NONE
|
|
TYPE(outer), INTENT(INOUT) :: a
|
|
INTEGER :: i
|
|
i = a%inr(1)%i(1)
|
|
END SUBROUTINE test2
|
|
|
|
SUBROUTINE test3(a)
|
|
USE types
|
|
IMPLICIT NONE
|
|
TYPE(outer), INTENT(IN) :: a
|
|
END SUBROUTINE test3
|
|
END MODULE test
|
|
! { dg-final { cleanup-modules "types mymod test" } }
|