48 lines · c
1// RUN: %libomp-compile-and-run2#include <stdio.h>3#include <stdlib.h>4#include "omp_testsuite.h"5 6static int sum1 = 789;7#pragma omp threadprivate(sum1)8 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 for23 for (i = 1; i < 1000; i++) {24 sum1 = sum1 + i;25 } /*end of for*/26 #pragma omp critical27 {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 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