mirror of
https://github.com/autc04/Retro68.git
synced 2024-06-28 11:30:19 +00:00
44 lines
1.1 KiB
Fortran
44 lines
1.1 KiB
Fortran
! PR target/36680
|
|
! { dg-do compile { target i?86-*-* x86_64-*-* } }
|
|
! { dg-options "-O1 -fschedule-insns" }
|
|
|
|
MODULE class_dummy_atom_kdtree_types
|
|
TYPE dummy_atom_kdtree_data
|
|
INTEGER :: dummy
|
|
END TYPE
|
|
|
|
TYPE :: dummy_atom_kdtree_node
|
|
TYPE(dummy_atom_kdtree_node_private), POINTER :: p
|
|
END TYPE
|
|
|
|
TYPE :: dummy_atom_kdtree_node_private
|
|
TYPE(dummy_atom_kdtree_data) :: data
|
|
END TYPE
|
|
|
|
TYPE :: dummy_atom_kdtree
|
|
TYPE(dummy_atom_kdtree_node) :: root
|
|
END TYPE
|
|
END MODULE
|
|
|
|
FUNCTION dummy_atom_kdtree_insert(this, item)
|
|
USE class_dummy_atom_kdtree_types
|
|
|
|
TYPE(dummy_atom_kdtree), INTENT(inout) :: this
|
|
TYPE(dummy_atom_kdtree_data), INTENT(in) :: item
|
|
|
|
TYPE(dummy_atom_kdtree_node) :: parent, current
|
|
INTEGER :: cmp, level, discriminator
|
|
|
|
parent = dummy_atom_kdtree_node(null())
|
|
current = this%root
|
|
level = 1
|
|
discriminator = 1
|
|
|
|
DO WHILE (ASSOCIATED( current%p ))
|
|
discriminator = MODULO(level-1, 3) + 1
|
|
cmp = dummy_atom_kdtree_data_compare(item, current%p%data, discriminator)
|
|
level = level + 1
|
|
END DO
|
|
|
|
END FUNCTION
|