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

int test_omp_section_firstprivate()
{
  int sum;
  int sum0;
  int known_sum;

  sum0 = 11;
  sum = 7;
  #pragma omp parallel
  {
    #pragma omp  sections firstprivate(sum0)
    {
      #pragma omp section 
      {
        #pragma omp critical
        {
          sum = sum + sum0;
        }
      }  
      #pragma omp section
      {
        #pragma omp critical
        {
          sum = sum + sum0;
        }
      }
      #pragma omp section
      {
        #pragma omp critical
        {
          sum = sum + sum0;
        }
      }         
    }
  }
  known_sum = 11 * 3 + 7;
  return (known_sum == sum); 
} /* end of check_section_firstprivate*/

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

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