blob: 55ae5f0cb266af799b8ee768e906399e6d522e71 [file] [log] [blame]
Jim Cownie18d84732014-05-10 17:02:09 +00001<ompts:test>
2<ompts:testdescription>Test which checks the omp parallel sections lastprivate directive.</ompts:testdescription>
3<ompts:ompversion>2.0</ompts:ompversion>
4<ompts:directive>omp parallel sections lastprivate</ompts:directive>
5<ompts:dependences>omp critical,omp parallel sections private</ompts:dependences>
6<ompts:testcode>
7#include <stdio.h>
8#include "omp_testsuite.h"
9
10int <ompts:testcode:functionname>omp_parallel_sections_lastprivate</ompts:testcode:functionname>(FILE * logFile){
11 <ompts:orphan:vars>
12 int sum;
13 int sum0;
14 int i;
15 int i0;
16 </ompts:orphan:vars>
17 int known_sum;
18 sum =0;
19 sum0 = 0;
20 i0 = -1;
21
22 <ompts:orphan>
23#pragma omp parallel sections private(i,sum0) <ompts:check>lastprivate(i0)</ompts:check><ompts:crosscheck>private(i0)</ompts:crosscheck>
24 {
25#pragma omp section
26 {
27 sum0=0;
28 for (i=1;i<400;i++)
29 {
30 sum0=sum0+i;
31 i0=i;
32 }
33#pragma omp critical
34 {
35 sum= sum+sum0;
36 } /*end of critical*/
37 }/* end of section */
38#pragma omp section
39 {
40 sum0=0;
41 for(i=400;i<700;i++)
42 {
43 sum0=sum0+i; /*end of for*/
44 i0=i;
45 }
46#pragma omp critical
47 {
48 sum= sum+sum0;
49 } /*end of critical*/
50 }
51#pragma omp section
52 {
53 sum0=0;
54 for(i=700;i<1000;i++)
55 {
56 sum0=sum0+i;
57 i0=i;
58 }
59#pragma omp critical
60 {
61 sum= sum+sum0;
62 } /*end of critical*/
63 }
64 }/* end of parallel sections*/
65 </ompts:orphan>
66 known_sum=(999*1000)/2;
67 return ((known_sum==sum) && (i0==999) );
68}
69</ompts:testcode>
70</ompts:test>