// RUN: %libomp-compile-and-run
#include <stdio.h>
#include "omp_testsuite.h"

int test_omp_master_3()
{
  int nthreads;
  int executing_thread;
  int tid_result = 0; /* counts up the number of wrong thread no. for
               the master thread. (Must be 0) */
  nthreads = 0;
  executing_thread = -1;

  #pragma omp parallel
  {
    #pragma omp master 
    {
      int tid = omp_get_thread_num();
      if (tid != 0) {
        #pragma omp critical
        { tid_result++; }
      }
      #pragma omp critical
      {
        nthreads++;
      }
      executing_thread = omp_get_thread_num ();
    } /* end of master*/
  } /* end of parallel*/
  return ((nthreads == 1) && (executing_thread == 0) && (tid_result == 0));
}

int main()
{
  int i;
  int num_failed=0;

  for(i = 0; i < REPETITIONS; i++) {
    if(!test_omp_master_3()) {
      num_failed++;
    }
  }
  return num_failed;
}
