------- Comment #32 from pault at gcc dot gnu dot org 2006-10-02 21:54 ------- Created an attachment (id=12373) --> (http://gcc.gnu.org/bugzilla/attachment.cgi?id=12373&action=view) A patch that fixes test_ab9.f90
You will see the modification in trans-types.c. This is the first bit of the patch that is not specific to allocatable components, although I am hard pressed to find a case that doesn't involve them. If you feel uncomfortable with breaking the hermetic seal, I could make it specific. That said, this does regtest OK, including all , the other derived type association tests. I will write a test case tomorrow sometime and so have included my reduced version of test_ab9.f90 from Slavatore Filippone to ensure that the audit trail makes sense. The problem arises because of the assignment that is used to initialize the INTENT(OUT) derived type in gfc_conv_function_call. This exercises an association that, I think, would not otherwise be possible. It is fixed by usin the current namespace to start the search for like types, from any namespace where there is no parent. The case where the derived type found is the same as 'self' is eliminated from the search by a continue statement. Paul module modA type dt integer, allocatable :: i(:) end type dt end module modA Module modB interface subroutine foo(x) use modA type(dt), intent(out) :: x end subroutine foo end interface end module modB subroutine test_ab9() use modB ! putting this after USE modA clears the problem use modA type(dt) :: a call foo(a) return end subroutine test_ab9 -- pault at gcc dot gnu dot org changed: What |Removed |Added ---------------------------------------------------------------------------- Attachment #12350|0 |1 is obsolete| | Attachment #12354|0 |1 is obsolete| | http://gcc.gnu.org/bugzilla/show_bug.cgi?id=20541