67 lines · c
1// RUN: %libomp-compile-and-run2#include <stdio.h>3#include "omp_testsuite.h"4 5int test_omp_section_private()6{7 int sum;8 int sum0;9 int i;10 int known_sum;11 12 sum = 7;13 sum0 = 0;14 15 #pragma omp parallel16 {17 #pragma omp sections private(sum0,i)18 {19 #pragma omp section20 {21 sum0 = 0;22 for (i = 1; i < 400; i++)23 sum0 = sum0 + i;24 #pragma omp critical25 {26 sum = sum + sum0;27 }28 }29 #pragma omp section30 {31 sum0 = 0;32 for (i = 400; i < 700; i++)33 sum0 = sum0 + i;34 #pragma omp critical35 {36 sum = sum + sum0;37 }38 }39 #pragma omp section40 {41 sum0 = 0;42 for (i = 700; i < 1000; i++)43 sum0 = sum0 + i;44 #pragma omp critical45 {46 sum = sum + sum0;47 }48 }49 } /*end of sections*/50 } /* end of parallel */51 known_sum = (999 * 1000) / 2 + 7;52 return (known_sum == sum);53} /* end of check_section_private*/54 55int main()56{57 int i;58 int num_failed=0;59 60 for(i = 0; i < REPETITIONS; i++) {61 if(!test_omp_section_private()) {62 num_failed++;63 }64 }65 return num_failed;66}67