xref: /llvm-project/openmp/runtime/test/threadprivate/omp_threadprivate_for.c (revision 373107699709f6fb06992bf6b76274091570aaf2)
1614c7ef8SJonathan Peyton // RUN: %libomp-compile-and-run
2614c7ef8SJonathan Peyton #include "omp_testsuite.h"
3614c7ef8SJonathan Peyton #include <stdlib.h>
4614c7ef8SJonathan Peyton #include <stdio.h>
5614c7ef8SJonathan Peyton 
6614c7ef8SJonathan Peyton static int i;
7614c7ef8SJonathan Peyton #pragma omp threadprivate(i)
8614c7ef8SJonathan Peyton 
test_omp_threadprivate_for()9614c7ef8SJonathan Peyton int test_omp_threadprivate_for()
10614c7ef8SJonathan Peyton {
11614c7ef8SJonathan Peyton   int known_sum;
12614c7ef8SJonathan Peyton   int sum;
13614c7ef8SJonathan Peyton 
14614c7ef8SJonathan Peyton   known_sum = (LOOPCOUNT * (LOOPCOUNT + 1)) / 2;
15614c7ef8SJonathan Peyton   sum = 0;
16614c7ef8SJonathan Peyton 
17614c7ef8SJonathan Peyton   #pragma omp parallel
18614c7ef8SJonathan Peyton   {
19*4b939405SAndrey Churbanov     int sum0 = 0, i0;
20614c7ef8SJonathan Peyton     #pragma omp for
21*4b939405SAndrey Churbanov     for (i0 = 1; i0 <= LOOPCOUNT; i0++) {
22*4b939405SAndrey Churbanov       i = i0;
23614c7ef8SJonathan Peyton       sum0 = sum0 + i;
24614c7ef8SJonathan Peyton     }
25614c7ef8SJonathan Peyton     #pragma omp critical
26614c7ef8SJonathan Peyton     {
27614c7ef8SJonathan Peyton       sum = sum + sum0;
28614c7ef8SJonathan Peyton     }
29614c7ef8SJonathan Peyton   } /* end of parallel */
30614c7ef8SJonathan Peyton 
31614c7ef8SJonathan Peyton   if (known_sum != sum ) {
32614c7ef8SJonathan Peyton     fprintf(stderr, " known_sum = %d, sum = %d\n", known_sum, sum);
33614c7ef8SJonathan Peyton   }
34614c7ef8SJonathan Peyton   return (known_sum == sum);
35614c7ef8SJonathan Peyton } /* end of check_threadprivate*/
36614c7ef8SJonathan Peyton 
main()37614c7ef8SJonathan Peyton int main()
38614c7ef8SJonathan Peyton {
39614c7ef8SJonathan Peyton   int i;
40614c7ef8SJonathan Peyton   int num_failed=0;
41614c7ef8SJonathan Peyton 
42614c7ef8SJonathan Peyton   for(i = 0; i < REPETITIONS; i++) {
43614c7ef8SJonathan Peyton     if(!test_omp_threadprivate_for()) {
44614c7ef8SJonathan Peyton       num_failed++;
45614c7ef8SJonathan Peyton     }
46614c7ef8SJonathan Peyton   }
47614c7ef8SJonathan Peyton   return num_failed;
48614c7ef8SJonathan Peyton }
49