]> oss.titaniummirror.com Git - msp430-gcc.git/blobdiff - libgomp/testsuite/libgomp.fortran/pr27395-1.f90
Imported gcc-4.4.3
[msp430-gcc.git] / libgomp / testsuite / libgomp.fortran / pr27395-1.f90
diff --git a/libgomp/testsuite/libgomp.fortran/pr27395-1.f90 b/libgomp/testsuite/libgomp.fortran/pr27395-1.f90
new file mode 100644 (file)
index 0000000..380a107
--- /dev/null
@@ -0,0 +1,31 @@
+! PR fortran/27395
+! { dg-do run }
+
+program pr27395_1
+  implicit none
+  integer, parameter :: n=10,m=1001
+  integer :: i
+  integer, dimension(n) :: sumarray
+  call foo(n,m,sumarray)
+  do i=1,n
+    if (sumarray(i).ne.m*i) call abort
+  end do
+end program pr27395_1
+
+subroutine foo(n,m,sumarray)
+  use omp_lib, only : omp_get_thread_num
+  implicit none
+  integer, intent(in) :: n,m
+  integer, dimension(n), intent(out) :: sumarray
+  integer :: i,j
+  sumarray(:)=0
+!$OMP PARALLEL DEFAULT(shared) NUM_THREADS(4)
+!$OMP DO PRIVATE(j,i), REDUCTION(+:sumarray)
+  do j=1,m
+    do i=1,n
+      sumarray(i)=sumarray(i)+i
+    end do
+  end do
+!$OMP END DO
+!$OMP END PARALLEL
+end subroutine foo