1! { dg-do compile } 2! Tests the fix for PR31550 in which pointers to derived type components 3! were being TREE-SSA declared in the wrong order and so in the incorrect 4! context. 5! 6! Contributed by Daniel Franke <dfranke@gcc.gnu.org> 7! 8MODULE class_dummy_atom_types 9TYPE :: dummy_atom_list 10 TYPE(dummy_atom), DIMENSION(:), POINTER :: table 11 INTEGER :: nused 12END TYPE 13 14TYPE :: dummy_atom 15 TYPE(dummy_atom_private), POINTER :: p 16END TYPE 17 18TYPE :: dummy_atom_private 19 TYPE(dummy_atom_list) :: neighbours 20END TYPE 21END MODULE 22 23MODULE class_dummy_atom_list 24USE class_dummy_atom_types, ONLY: dummy_atom_list 25 26INTERFACE 27 SUBROUTINE dummy_atom_list_init_copy(this, other) 28 USE class_dummy_atom_types, ONLY: dummy_atom_list 29 TYPE(dummy_atom_list), INTENT(out) :: this 30 TYPE(dummy_atom_list), INTENT(in) :: other 31 END SUBROUTINE 32END INTERFACE 33 34INTERFACE 35 SUBROUTINE dummy_atom_list_merge(this, other) 36 USE class_dummy_atom_types, ONLY: dummy_atom_list 37 TYPE(dummy_atom_list), INTENT(inout) :: this 38 TYPE(dummy_atom_list), INTENT(in) :: other 39 END SUBROUTINE 40END INTERFACE 41END MODULE 42 43SUBROUTINE dummy_atom_list_init_copy(this, other) 44 USE class_dummy_atom_list, ONLY: dummy_atom_list, dummy_atom_list_merge 45 46 TYPE(dummy_atom_list), INTENT(out) :: this 47 TYPE(dummy_atom_list), INTENT(in) :: other 48 49 this%table(1:this%nused) = other%table(1:other%nused) 50END SUBROUTINE 51