brintos

brintos / llvm-project-archived public Read only

0
0
Text · 919 B · 2fa6fd2 Raw
48 lines · c
1// RUN: %libomp-compile-and-run2#include <stdio.h>3#include "omp_testsuite.h"4 5static omp_nest_lock_t lck;6 7int test_omp_test_nest_lock()8{9  int nr_threads_in_single = 0;10  int result = 0;11  int nr_iterations = 0;12  int i;13 14  omp_init_nest_lock (&lck);15  #pragma omp parallel shared(lck)16  {17    #pragma omp for18    for (i = 0; i < LOOPCOUNT; i++)19    {20      /*omp_set_lock(&lck);*/21      while(!omp_test_nest_lock (&lck))22      {};23      #pragma omp flush24      nr_threads_in_single++;25      #pragma omp flush26      nr_iterations++;27      nr_threads_in_single--;28      result = result + nr_threads_in_single;29      omp_unset_nest_lock (&lck);30    }31  }32  omp_destroy_nest_lock (&lck);33  return ((result == 0) && (nr_iterations == LOOPCOUNT));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_test_nest_lock()) {43      num_failed++;44    }45  }46  return num_failed;47}48