45 lines · c
1// RUN: %libomp-compile-and-run2#include <stdio.h>3#include "omp_testsuite.h"4 5int test_omp_single()6{7 int nr_threads_in_single;8 int result;9 int nr_iterations;10 int i;11 12 nr_threads_in_single = 0;13 result = 0;14 nr_iterations = 0;15 16 #pragma omp parallel private(i)17 {18 for (i = 0; i < LOOPCOUNT; i++) {19 #pragma omp single20 {21 #pragma omp flush22 nr_threads_in_single++;23 #pragma omp flush24 nr_iterations++;25 nr_threads_in_single--;26 result = result + nr_threads_in_single;27 }28 }29 }30 return ((result == 0) && (nr_iterations == LOOPCOUNT));31} /* end of check_single*/32 33int main()34{35 int i;36 int num_failed=0;37 38 for(i = 0; i < REPETITIONS; i++) {39 if(!test_omp_single()) {40 num_failed++;41 }42 }43 return num_failed;44}45