blob: 5ba71487e908183fb032218bab44f622702537ea [file] [log] [blame]
Jim Cownie18d84732014-05-10 17:02:09 +00001<ompts:test>
2<ompts:testdescription>Test which checks the omp section lastprivate directive.</ompts:testdescription>
3<ompts:ompversion>2.0</ompts:ompversion>
4<ompts:directive>omp section lastprivate</ompts:directive>
5<ompts:testcode>
6 INTEGER FUNCTION <ompts:testcode:functionname>section_lastprivate</ompts:testcode:functionname>()
7 INTEGER known_sum
8
9 <ompts:orphan:vars>
10 INTEGER i, i0, sum, sum0
11 COMMON /orphvars/ i,i0,sum
12 </ompts:orphan:vars>
13
14 sum = 0
15 sum0 = 0
16 i0 = -1
17
18!$omp parallel
19<ompts:orphan>
20!$omp sections <ompts:check>lastprivate(i0)</ompts:check><ompts:crosscheck>private(i0)</ompts:crosscheck> private(i,sum0)
21!$omp section
22 sum0 = 0
23 DO i=1, 399
24 sum0 = sum0 + i
25 i0 = i
26 END DO
27!$omp critical
28 sum = sum + sum0
29!$omp end critical
30!$omp section
31 sum0 = 0
32 DO i=400, 699
33 sum0 = sum0 + i
34 i0 = i
35 END DO
36!$omp critical
37 sum = sum + sum0
38!$omp end critical
39!$omp section
40 sum0 = 0
41 DO i=700, 999
42 sum0 = sum0 + i
43 i0 = i
44 END DO
45!$omp critical
46 sum = sum + sum0
47!$omp end critical
48!$omp end sections
49</ompts:orphan>
50!$omp end parallel
51
52 known_sum = (999*1000)/2
53 IF ( known_sum .EQ. sum .AND. i0 .EQ. 999 ) THEN
54 <testfunctionname></testfunctionname> = 1
55 ELSE
56 <testfunctionname></testfunctionname> = 0
57 END IF
58 END
59</ompts:testcode>
60</omts:test>
61
62