xref: /llvm-project/flang/test/Semantics/OpenMP/do18.f90 (revision 502bea25bdc07d1811b8bfea1c2e6bfa8617f72f)
1*3323a4bdSKiran Chandramohan! RUN: %flang_fc1 -fdebug-unparse-with-symbols %s 2>&1 | FileCheck %s
2*3323a4bdSKiran Chandramohan! RUN: %flang_fc1 -fopenmp -fdebug-unparse-with-symbols %s 2>&1 | FileCheck %s
3*3323a4bdSKiran Chandramohan! CHECK-NOT: do *[1-9]
4*3323a4bdSKiran Chandramohan
5*3323a4bdSKiran Chandramohanprogram P
6*3323a4bdSKiran Chandramohanimplicit none
7*3323a4bdSKiran Chandramohaninteger OMP_GET_NUM_THREADS, OMP_GET_THREAD_NUM
8*3323a4bdSKiran Chandramohaninteger NUMTHRDS, TID
9*3323a4bdSKiran Chandramohaninteger N, CSZ, CNUM, I
10*3323a4bdSKiran Chandramohanparameter (N=100)
11*3323a4bdSKiran Chandramohanparameter (CSZ=10)
12*3323a4bdSKiran Chandramohanreal A(N), B(N), C(N)
13*3323a4bdSKiran Chandramohan
14*3323a4bdSKiran Chandramohando 10 I = 1, N
15*3323a4bdSKiran Chandramohan   A(I) = I * 1.0
16*3323a4bdSKiran Chandramohan10 continue
17*3323a4bdSKiran Chandramohan
18*3323a4bdSKiran ChandramohanB = A
19*3323a4bdSKiran ChandramohanCNUM = CSZ
20*3323a4bdSKiran Chandramohan
21*3323a4bdSKiran Chandramohan!$OMP PARALLEL SHARED(A,B,C,NUMTHRDS,CNUM) PRIVATE(I,TID)
22*3323a4bdSKiran ChandramohanTID = OMP_GET_THREAD_NUM()
23*3323a4bdSKiran Chandramohanif (TID .EQ. 0) then
24*3323a4bdSKiran Chandramohan   NUMTHRDS = OMP_GET_NUM_THREADS()
25*3323a4bdSKiran Chandramohan   print *, "Number of threads =", NUMTHRDS
26*3323a4bdSKiran Chandramohanend if
27*3323a4bdSKiran Chandramohanprint *, "Thread", TID, " is starting..."
28*3323a4bdSKiran Chandramohan
29*3323a4bdSKiran Chandramohan!$OMP DO SCHEDULE(DYNAMIC,CNUM)
30*3323a4bdSKiran Chandramohando 20 I = 1, N
31*3323a4bdSKiran Chandramohan   C(I) = A(I) + B(I)
32*3323a4bdSKiran Chandramohan   write (*,100) TID, I, C(I)
33*3323a4bdSKiran Chandramohan20 continue
34*3323a4bdSKiran Chandramohan!$OMP END DO NOWAIT
35*3323a4bdSKiran Chandramohan
36*3323a4bdSKiran Chandramohanprint *, "Thread", TID, " done."
37*3323a4bdSKiran Chandramohan
38*3323a4bdSKiran Chandramohan!$OMP END PARALLEL
39*3323a4bdSKiran Chandramohan100 format(" Thread", I2, ": C(", I3, ")=", F8.2)
40*3323a4bdSKiran Chandramohanend program P
41