52 lines
1.5 KiB
Fortran
52 lines
1.5 KiB
Fortran
|
! { dg-do compile }
|
||
|
! Tests the fix for PR31550 in which pointers to derived type components
|
||
|
! were being TREE-SSA declared in the wrong order and so in the incorrect
|
||
|
! context.
|
||
|
!
|
||
|
! Contributed by Daniel Franke <dfranke@gcc.gnu.org>
|
||
|
!
|
||
|
MODULE class_dummy_atom_types
|
||
|
TYPE :: dummy_atom_list
|
||
|
TYPE(dummy_atom), DIMENSION(:), POINTER :: table
|
||
|
INTEGER :: nused
|
||
|
END TYPE
|
||
|
|
||
|
TYPE :: dummy_atom
|
||
|
TYPE(dummy_atom_private), POINTER :: p
|
||
|
END TYPE
|
||
|
|
||
|
TYPE :: dummy_atom_private
|
||
|
TYPE(dummy_atom_list) :: neighbours
|
||
|
END TYPE
|
||
|
END MODULE
|
||
|
|
||
|
MODULE class_dummy_atom_list
|
||
|
USE class_dummy_atom_types, ONLY: dummy_atom_list
|
||
|
|
||
|
INTERFACE
|
||
|
SUBROUTINE dummy_atom_list_init_copy(this, other)
|
||
|
USE class_dummy_atom_types, ONLY: dummy_atom_list
|
||
|
TYPE(dummy_atom_list), INTENT(out) :: this
|
||
|
TYPE(dummy_atom_list), INTENT(in) :: other
|
||
|
END SUBROUTINE
|
||
|
END INTERFACE
|
||
|
|
||
|
INTERFACE
|
||
|
SUBROUTINE dummy_atom_list_merge(this, other)
|
||
|
USE class_dummy_atom_types, ONLY: dummy_atom_list
|
||
|
TYPE(dummy_atom_list), INTENT(inout) :: this
|
||
|
TYPE(dummy_atom_list), INTENT(in) :: other
|
||
|
END SUBROUTINE
|
||
|
END INTERFACE
|
||
|
END MODULE
|
||
|
|
||
|
SUBROUTINE dummy_atom_list_init_copy(this, other)
|
||
|
USE class_dummy_atom_list, ONLY: dummy_atom_list, dummy_atom_list_merge
|
||
|
|
||
|
TYPE(dummy_atom_list), INTENT(out) :: this
|
||
|
TYPE(dummy_atom_list), INTENT(in) :: other
|
||
|
|
||
|
this%table(1:this%nused) = other%table(1:other%nused)
|
||
|
END SUBROUTINE
|
||
|
! { dg-final { cleanup-modules "class_dummy_atom_types class_dummy_atom_list" } }
|