xref: /llvm-project/openmp/runtime/test/parallel/omp_parallel_shared.c (revision 373107699709f6fb06992bf6b76274091570aaf2)
1*614c7ef8SJonathan Peyton // RUN: %libomp-compile-and-run
2*614c7ef8SJonathan Peyton #include <stdio.h>
3*614c7ef8SJonathan Peyton #include "omp_testsuite.h"
4*614c7ef8SJonathan Peyton 
test_omp_parallel_shared()5*614c7ef8SJonathan Peyton int test_omp_parallel_shared()
6*614c7ef8SJonathan Peyton {
7*614c7ef8SJonathan Peyton   int i;
8*614c7ef8SJonathan Peyton   int sum;
9*614c7ef8SJonathan Peyton   int known_sum;
10*614c7ef8SJonathan Peyton 
11*614c7ef8SJonathan Peyton   sum = 0;
12*614c7ef8SJonathan Peyton   known_sum = (LOOPCOUNT * (LOOPCOUNT + 1)) / 2 ;
13*614c7ef8SJonathan Peyton 
14*614c7ef8SJonathan Peyton   #pragma omp parallel private(i) shared(sum)
15*614c7ef8SJonathan Peyton   {
16*614c7ef8SJonathan Peyton 
17*614c7ef8SJonathan Peyton     int mysum = 0;
18*614c7ef8SJonathan Peyton     #pragma omp for
19*614c7ef8SJonathan Peyton     for (i = 1; i <= LOOPCOUNT; i++) {
20*614c7ef8SJonathan Peyton       mysum = mysum + i;
21*614c7ef8SJonathan Peyton     }
22*614c7ef8SJonathan Peyton     #pragma omp critical
23*614c7ef8SJonathan Peyton     {
24*614c7ef8SJonathan Peyton       sum = sum + mysum;
25*614c7ef8SJonathan Peyton     }
26*614c7ef8SJonathan Peyton 
27*614c7ef8SJonathan Peyton 
28*614c7ef8SJonathan Peyton   }
29*614c7ef8SJonathan Peyton   if (known_sum != sum) {
30*614c7ef8SJonathan Peyton     fprintf(stderr, "KNOWN_SUM = %d; SUM = %d\n", known_sum, sum);
31*614c7ef8SJonathan Peyton   }
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_shared()) {
42*614c7ef8SJonathan Peyton       num_failed++;
43*614c7ef8SJonathan Peyton     }
44*614c7ef8SJonathan Peyton   }
45*614c7ef8SJonathan Peyton   return num_failed;
46*614c7ef8SJonathan Peyton }
47