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