LLVM OpenMP
20.0.0git
runtime
test
worksharing
sections
omp_section_lastprivate.c
Go to the documentation of this file.
1
// RUN: %libomp-compile-and-run
2
#include <stdio.h>
3
#include "
omp_testsuite.h
"
4
5
int
test_omp_section_lastprivate
()
6
{
7
int
i0 = -1;
8
int
sum
= 0;
9
int
i
;
10
int
sum0
= 0;
11
int
known_sum;
12
13
i0 = -1;
14
sum
= 0;
15
16
#pragma omp parallel
17
{
18
#pragma omp sections lastprivate(i0) private(i,sum0)
19
{
20
#pragma omp section
21
{
22
sum0
= 0;
23
for
(
i
= 1;
i
< 400;
i
++)
24
{
25
sum0
=
sum0
+
i
;
26
i0 =
i
;
27
}
28
#pragma omp critical
29
{
30
sum
=
sum
+
sum0
;
31
}
/*end of critical*/
32
}
/* end of section */
33
#pragma omp section
34
{
35
sum0
= 0;
36
for
(
i
= 400;
i
< 700;
i
++)
37
{
38
sum0
=
sum0
+
i
;
39
i0 =
i
;
40
}
41
#pragma omp critical
42
{
43
sum
=
sum
+
sum0
;
44
}
/*end of critical*/
45
}
46
#pragma omp section
47
{
48
sum0
= 0;
49
for
(
i
= 700;
i
< 1000;
i
++)
50
{
51
sum0
=
sum0
+
i
;
52
i0 =
i
;
53
}
54
#pragma omp critical
55
{
56
sum
=
sum
+
sum0
;
57
}
/*end of critical*/
58
}
/* end of section */
59
}
/* end of sections*/
60
}
/* end of parallel*/
61
known_sum = (999 * 1000) / 2;
62
return
((known_sum ==
sum
) && (i0 == 999) );
63
}
64
65
int
main
()
66
{
67
int
i
;
68
int
num_failed=0;
69
70
for
(
i
= 0;
i
<
REPETITIONS
;
i
++) {
71
if
(!
test_omp_section_lastprivate
()) {
72
num_failed++;
73
}
74
}
75
return
num_failed;
76
}
i
#define i
Definition:
kmp_stub.cpp:87
sum
int sum
Definition:
omp_for_schedule_runtime.c:19
test_omp_section_lastprivate
int test_omp_section_lastprivate()
Definition:
omp_section_lastprivate.c:5
main
int main()
Definition:
omp_section_lastprivate.c:65
omp_testsuite.h
REPETITIONS
#define REPETITIONS
Definition:
omp_testsuite.h:13
sum0
static int sum0
Definition:
omp_threadprivate.c:14
Generated on Wed Jan 29 2025 20:58:03 for LLVM OpenMP by
1.9.6