48 lines
		
	
	
		
			929 B
		
	
	
	
		
			C
		
	
	
	
			
		
		
	
	
			48 lines
		
	
	
		
			929 B
		
	
	
	
		
			C
		
	
	
	
// RUN: %libomp-compile-and-run
 | 
						|
#include <stdio.h>
 | 
						|
#include <math.h>
 | 
						|
#include "omp_testsuite.h"
 | 
						|
 | 
						|
/* Utility function do spend some time in a loop */
 | 
						|
int test_omp_task_imp_firstprivate()
 | 
						|
{
 | 
						|
  int i=5;
 | 
						|
  int k = 0;
 | 
						|
  int result = 0;
 | 
						|
  int task_result = 1;
 | 
						|
  #pragma omp parallel firstprivate(i)
 | 
						|
  {
 | 
						|
    #pragma omp single
 | 
						|
    {
 | 
						|
      for (k = 0; k < NUM_TASKS; k++) {
 | 
						|
        #pragma omp task shared(result , task_result)
 | 
						|
        {
 | 
						|
          int j;
 | 
						|
          //check if i is private
 | 
						|
          if(i != 5)
 | 
						|
            task_result = 0;
 | 
						|
          for(j = 0; j < NUM_TASKS; j++)
 | 
						|
            i++;
 | 
						|
          //this should be firstprivate implicitly
 | 
						|
        }
 | 
						|
      }
 | 
						|
      #pragma omp taskwait
 | 
						|
      result = (task_result && i==5);
 | 
						|
    }
 | 
						|
  }
 | 
						|
  return result;
 | 
						|
}
 | 
						|
 | 
						|
int main()
 | 
						|
{
 | 
						|
  int i;
 | 
						|
  int num_failed=0;
 | 
						|
 | 
						|
  for(i = 0; i < REPETITIONS; i++) {
 | 
						|
    if(!test_omp_task_imp_firstprivate()) {
 | 
						|
      num_failed++;
 | 
						|
    }
 | 
						|
  }
 | 
						|
  return num_failed;
 | 
						|
}
 |