diff gcc/testsuite/gfortran.dg/pr36680.f90 @ 111:04ced10e8804

gcc 7
author kono
date Fri, 27 Oct 2017 22:46:09 +0900
parents
children
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/gcc/testsuite/gfortran.dg/pr36680.f90	Fri Oct 27 22:46:09 2017 +0900
@@ -0,0 +1,43 @@
+! 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