xref: /llvm-project/openmp/runtime/test/worksharing/for/omp_parallel_for_lastprivate.c (revision 614c7ef81c7de51f61239e609edf9c6716b23ebc)
1 // RUN: %libomp-compile-and-run
2 #include <stdio.h>
3 #include "omp_testsuite.h"
4 
test_omp_parallel_for_lastprivate()5 int test_omp_parallel_for_lastprivate()
6 {
7   int sum;
8   int i;
9   int i0;
10   int known_sum;
11 
12   sum =0;
13   i0 = -1;
14 
15   #pragma omp parallel for reduction(+:sum) \
16     schedule(static,7) private(i) lastprivate(i0)
17   for (i = 1; i <= LOOPCOUNT; i++) {
18     sum = sum + i;
19     i0 = i;
20   } /* end of parallel for */
21 
22   known_sum = (LOOPCOUNT * (LOOPCOUNT + 1)) / 2;
23   return ((known_sum == sum) && (i0 == LOOPCOUNT));
24 } /* end of check_parallel_for_lastprivate */
25 
main()26 int main()
27 {
28   int i;
29   int num_failed=0;
30 
31   for(i = 0; i < REPETITIONS; i++) {
32     if(!test_omp_parallel_for_lastprivate()) {
33       num_failed++;
34     }
35   }
36   return num_failed;
37 }
38