! { dg-do compile } ! Tests the patch for PR 29641, in which an ICE would occur with ! the ordering of USE statements below. ! ! Contributed by Jakub Jelinek ! module A type :: T integer :: u end type T end module A module B contains function foo() use A type(T), pointer :: foo nullify (foo) end function foo end module B subroutine bar() use B ! The order here is important use A ! If use A comes before use B, it works type(T), pointer :: x x => foo() end subroutine bar use B use A type(T), pointer :: x type(T), target :: y x => y print *, associated (x) x => foo () print *, associated (x) end