brintos

brintos / llvm-project-archived public Read only

0
0
Text · 867 B · 5e9e635 Raw
45 lines · c
1// RUN: %libomp-compile-and-run2#include <stdio.h>3#include "omp_testsuite.h"4 5/*6 * Checks that false is returned when called from serial region7 * and true is returned when called within parallel region.8 */9int test_omp_in_parallel()10{11  int serial;12  int isparallel;13 14  serial = 1;15  isparallel = 0;16  serial = omp_in_parallel();17 18  #pragma omp parallel19  {20    #pragma omp single21    {22      isparallel = omp_in_parallel();23    }24  }25  return (!(serial) && isparallel);26}27 28int main()29{30  int i;31  int num_failed=0;32 33  // the test requires more than 1 thread to pass34  omp_set_dynamic(0); // disable dynamic adjustment of threads35  if (omp_get_max_threads() == 1)36    omp_set_num_threads(2); // set 2 threads if no HW resources available37 38  for(i = 0; i < REPETITIONS; i++) {39    if(!test_omp_in_parallel()) {40      num_failed++;41    }42  }43  return num_failed;44}45