]> oss.titaniummirror.com Git - msp430-gcc.git/blobdiff - libgomp/testsuite/libgomp.fortran/appendix-a/a.4.1.f90
Imported gcc-4.4.3
[msp430-gcc.git] / libgomp / testsuite / libgomp.fortran / appendix-a / a.4.1.f90
diff --git a/libgomp/testsuite/libgomp.fortran/appendix-a/a.4.1.f90 b/libgomp/testsuite/libgomp.fortran/appendix-a/a.4.1.f90
new file mode 100644 (file)
index 0000000..3c2a74a
--- /dev/null
@@ -0,0 +1,29 @@
+! { dg-do run }
+      SUBROUTINE SUBDOMAIN(X, ISTART, IPOINTS)
+          INTEGER ISTART, IPOINTS
+          REAL X(*)
+          INTEGER I
+          DO 100 I=1,IPOINTS
+             X(ISTART+I) = 123.456
+ 100      CONTINUE
+      END SUBROUTINE SUBDOMAIN
+      SUBROUTINE SUB(X, NPOINTS)
+          INCLUDE "omp_lib.h"      ! or USE OMP_LIB
+          REAL X(*)
+          INTEGER NPOINTS
+          INTEGER IAM, NT, IPOINTS, ISTART
+!$OMP PARALLEL DEFAULT(PRIVATE) SHARED(X,NPOINTS)
+          IAM = OMP_GET_THREAD_NUM()
+          NT = OMP_GET_NUM_THREADS()
+          IPOINTS = NPOINTS/NT
+          ISTART = IAM * IPOINTS
+          IF (IAM .EQ. NT-1) THEN
+              IPOINTS = NPOINTS - ISTART
+          ENDIF
+          CALL SUBDOMAIN(X,ISTART,IPOINTS)
+!$OMP END PARALLEL
+      END SUBROUTINE SUB
+      PROGRAM A4
+          REAL ARRAY(10000)
+          CALL SUB(ARRAY, 10000)
+      END PROGRAM A4