xref: /llvm-project/openmp/runtime/test/parallel/omp_parallel_if.c (revision fe7f620ed6e30015267d131bb753fd408bb3dd8c)
1614c7ef8SJonathan Peyton // RUN: %libomp-compile-and-run
2b72f1ec9SDavid Truby // RUN: %libomp-irbuilder-compile-and-run
3*fe7f620eSJoachim Jenke 
4*fe7f620eSJoachim Jenke // irbuilder is only available with clang
5*fe7f620eSJoachim Jenke // REQUIRES: clang
6*fe7f620eSJoachim Jenke 
7614c7ef8SJonathan Peyton #include <stdio.h>
8614c7ef8SJonathan Peyton #include "omp_testsuite.h"
9614c7ef8SJonathan Peyton 
test_omp_parallel_if()10614c7ef8SJonathan Peyton int test_omp_parallel_if()
11614c7ef8SJonathan Peyton {
12614c7ef8SJonathan Peyton   int i;
13614c7ef8SJonathan Peyton   int sum;
14614c7ef8SJonathan Peyton   int known_sum;
15614c7ef8SJonathan Peyton   int mysum;
16614c7ef8SJonathan Peyton   int control=1;
17614c7ef8SJonathan Peyton 
18614c7ef8SJonathan Peyton   sum =0;
19614c7ef8SJonathan Peyton   known_sum = (LOOPCOUNT * (LOOPCOUNT + 1)) / 2 ;
20614c7ef8SJonathan Peyton   #pragma omp parallel private(i) if(control==0)
21614c7ef8SJonathan Peyton   {
22614c7ef8SJonathan Peyton     mysum = 0;
23614c7ef8SJonathan Peyton     for (i = 1; i <= LOOPCOUNT; i++) {
24614c7ef8SJonathan Peyton       mysum = mysum + i;
25614c7ef8SJonathan Peyton     }
26614c7ef8SJonathan Peyton     #pragma omp critical
27614c7ef8SJonathan Peyton     {
28614c7ef8SJonathan Peyton       sum = sum + mysum;
29614c7ef8SJonathan Peyton     }
30614c7ef8SJonathan Peyton   }
31614c7ef8SJonathan Peyton   return (known_sum == sum);
32614c7ef8SJonathan Peyton }
33614c7ef8SJonathan Peyton 
main()34614c7ef8SJonathan Peyton int main()
35614c7ef8SJonathan Peyton {
36614c7ef8SJonathan Peyton   int i;
37614c7ef8SJonathan Peyton   int num_failed=0;
38614c7ef8SJonathan Peyton 
39614c7ef8SJonathan Peyton   for(i = 0; i < REPETITIONS; i++) {
40614c7ef8SJonathan Peyton     if(!test_omp_parallel_if()) {
41614c7ef8SJonathan Peyton       num_failed++;
42614c7ef8SJonathan Peyton     }
43614c7ef8SJonathan Peyton   }
44614c7ef8SJonathan Peyton   return num_failed;
45614c7ef8SJonathan Peyton }
46