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