brintos

brintos / llvm-project-archived public Read only

0
0
Text · 889 B · 2e9fdf8 Raw
45 lines · c
1// RUN: %libomp-compile-and-run2#include <stdio.h>3#include "omp_testsuite.h"4 5int test_omp_master_3()6{7  int nthreads;8  int executing_thread;9  int tid_result = 0; /* counts up the number of wrong thread no. for10               the master thread. (Must be 0) */11  nthreads = 0;12  executing_thread = -1;13 14  #pragma omp parallel15  {16    #pragma omp master17    {18      int tid = omp_get_thread_num();19      if (tid != 0) {20        #pragma omp critical21        { tid_result++; }22      }23      #pragma omp critical24      {25        nthreads++;26      }27      executing_thread = omp_get_thread_num ();28    } /* end of master*/29  } /* end of parallel*/30  return ((nthreads == 1) && (executing_thread == 0) && (tid_result == 0));31}32 33int main()34{35  int i;36  int num_failed=0;37 38  for(i = 0; i < REPETITIONS; i++) {39    if(!test_omp_master_3()) {40      num_failed++;41    }42  }43  return num_failed;44}45