]> git.ipfire.org Git - thirdparty/gcc.git/commitdiff
re PR fortran/66680 (ICE with openmp, a loop and a type bound procedure)
authorDominique d'Humieres <dominiq@lps.ens.fr>
Thu, 7 Jan 2016 13:21:54 +0000 (14:21 +0100)
committerDominique d'Humieres <dominiq@gcc.gnu.org>
Thu, 7 Jan 2016 13:21:54 +0000 (14:21 +0100)
2016-01-07  Dominique d'Humieres <dominiq@lps.ens.fr>

PR fortran/66680
gfortran.dg/gomp/pr66680.f90: New test.

From-SVN: r232127

gcc/testsuite/ChangeLog
gcc/testsuite/gfortran.dg/gomp/pr66680.f90 [new file with mode: 0644]

index 53c19946899c9cb254c37beaa09b675db34a7339..869d0fb284171a6767e75d0f4a7fa81470f845fb 100644 (file)
@@ -1,3 +1,8 @@
+2016-01-07  Dominique d'Humieres <dominiq@lps.ens.fr>
+
+       PR fortran/66680
+       gfortran.dg/gomp/pr66680.f90: New test.
+
 2016-01-07  H.J. Lu  <hongjiu.lu@intel.com>
 
        PR target/69171
diff --git a/gcc/testsuite/gfortran.dg/gomp/pr66680.f90 b/gcc/testsuite/gfortran.dg/gomp/pr66680.f90
new file mode 100644 (file)
index 0000000..b068cb3
--- /dev/null
@@ -0,0 +1,46 @@
+! { dg-do run }
+! PR 66680: ICE with openmp, a loop and a type bound procedure
+! Contributed by Miha Polajnar <polajnar.miha@gmail.com>
+!
+module m1 
+  implicit none
+  integer :: n = 5
+  type :: t1
+  contains
+    procedure :: s => s1
+  end type t1
+contains
+  pure subroutine s1(self,p,esta)
+    class(t1), intent(in) :: self
+    integer, optional, intent(in) :: p
+    integer, intent(out) :: esta
+  end subroutine s1 
+end module m1
+module m2
+  use m1, only: t1, n
+  implicit none
+  type(t1), allocatable :: test(:)
+contains
+  pure subroutine s2(test1,esta)
+    type(t1), intent(in) :: test1
+    integer, intent(out) :: esta
+    integer :: p, i
+    do p = 1, n
+      i = p ! using i instead of p works
+      call test1%s(p=p,esta=esta)
+      if ( esta /= 0 ) return
+    end do
+  end subroutine s2
+  subroutine s3()
+    integer :: i, esta
+    !$omp parallel do  &
+    !$omp private(i)
+    do i = 1, n
+        call s2(test(i),esta)
+    end do
+    !$omp end parallel do
+  end subroutine s3
+end module m2
+program main
+  implicit none
+end program main