1! { dg-do compile } 2! Tests the fix for PR36366 a regression in which the order of USE statements 3! in 'test2' would cause the result of 'test1' not to have a reference to 4! the derived type 'inner'. 5! 6! Contributed by Jakub Jelinek <jakub@gcc.gnu.org> 7! 8MODULE types 9 IMPLICIT NONE 10 TYPE :: inner 11 INTEGER, POINTER :: i(:) 12 END TYPE inner 13 14 TYPE :: outer 15 TYPE(inner), POINTER :: inr(:) 16 END TYPE outer 17END MODULE types 18 19MODULE mymod 20 IMPLICIT NONE 21CONTAINS 22 FUNCTION test1() 23 USE types 24 IMPLICIT NONE 25 TYPE(outer), POINTER :: test1 26 NULLIFY(test1) 27 END FUNCTION test1 28END MODULE mymod 29 30MODULE test 31 IMPLICIT NONE 32CONTAINS 33 34 SUBROUTINE test2(a) 35 USE mymod 36 USE types 37 IMPLICIT NONE 38 TYPE(outer), INTENT(INOUT) :: a 39 INTEGER :: i 40 i = a%inr(1)%i(1) 41 END SUBROUTINE test2 42 43 SUBROUTINE test3(a) 44 USE types 45 IMPLICIT NONE 46 TYPE(outer), INTENT(IN) :: a 47 END SUBROUTINE test3 48END MODULE test 49