xref: /llvm-project/openmp/runtime/test/parallel/omp_parallel_private.c (revision 373107699709f6fb06992bf6b76274091570aaf2)
1*614c7ef8SJonathan Peyton // RUN: %libomp-compile-and-run
2*614c7ef8SJonathan Peyton #include <stdio.h>
3*614c7ef8SJonathan Peyton #include <stdlib.h>
4*614c7ef8SJonathan Peyton #include "omp_testsuite.h"
5*614c7ef8SJonathan Peyton 
6*614c7ef8SJonathan Peyton //static int sum1 = 789;
7*614c7ef8SJonathan Peyton 
test_omp_parallel_private()8*614c7ef8SJonathan Peyton int test_omp_parallel_private()
9*614c7ef8SJonathan Peyton {
10*614c7ef8SJonathan Peyton   int sum, num_threads,sum1;
11*614c7ef8SJonathan Peyton   int known_sum;
12*614c7ef8SJonathan Peyton 
13*614c7ef8SJonathan Peyton   sum = 0;
14*614c7ef8SJonathan Peyton   num_threads = 0;
15*614c7ef8SJonathan Peyton 
16*614c7ef8SJonathan Peyton   #pragma omp parallel private(sum1)
17*614c7ef8SJonathan Peyton   {
18*614c7ef8SJonathan Peyton     int i;
19*614c7ef8SJonathan Peyton     sum1 = 7;
20*614c7ef8SJonathan Peyton     /*printf("sum1=%d\n",sum1);*/
21*614c7ef8SJonathan Peyton     #pragma omp for
22*614c7ef8SJonathan Peyton     for (i = 1; i < 1000; i++) {
23*614c7ef8SJonathan Peyton       sum1 = sum1 + i;
24*614c7ef8SJonathan Peyton     }
25*614c7ef8SJonathan Peyton     #pragma omp critical
26*614c7ef8SJonathan Peyton     {
27*614c7ef8SJonathan Peyton       sum = sum + sum1;
28*614c7ef8SJonathan Peyton       num_threads++;
29*614c7ef8SJonathan Peyton     }
30*614c7ef8SJonathan Peyton   }
31*614c7ef8SJonathan Peyton   known_sum = (999 * 1000) / 2 + 7 * num_threads;
32*614c7ef8SJonathan Peyton   return (known_sum == sum);
33*614c7ef8SJonathan Peyton }
34*614c7ef8SJonathan Peyton 
main()35*614c7ef8SJonathan Peyton int main()
36*614c7ef8SJonathan Peyton {
37*614c7ef8SJonathan Peyton   int i;
38*614c7ef8SJonathan Peyton   int num_failed=0;
39*614c7ef8SJonathan Peyton 
40*614c7ef8SJonathan Peyton   for(i = 0; i < REPETITIONS; i++) {
41*614c7ef8SJonathan Peyton     if(!test_omp_parallel_private()) {
42*614c7ef8SJonathan Peyton       num_failed++;
43*614c7ef8SJonathan Peyton     }
44*614c7ef8SJonathan Peyton   }
45*614c7ef8SJonathan Peyton   return num_failed;
46*614c7ef8SJonathan Peyton }
47