brintos

brintos / llvm-project-archived public Read only

0
0
Text · 1.1 KiB · 9b775ec Raw
72 lines · c
1// RUN: %libomp-compile-and-run2#include <stdio.h>3#include "omp_testsuite.h"4 5int test_omp_parallel_sections_lastprivate()6{7  int sum;8  int sum0;9  int i;10  int i0;11  int known_sum;12  sum =0;13  sum0 = 0;14  i0 = -1;15 16  #pragma omp parallel sections private(i,sum0) lastprivate(i0)17  {18    #pragma omp section19    {20      sum0=0;21      for (i=1;i<400;i++) {22        sum0=sum0+i;23        i0=i;24      }25      #pragma omp critical26      {27        sum= sum+sum0;28      }29    }30    #pragma omp section31    {32      sum0=0;33      for(i=400;i<700;i++) {34        sum0=sum0+i;35        i0=i;36      }37      #pragma omp critical38      {39        sum= sum+sum0;40      }41    }42    #pragma omp section43    {44      sum0=0;45      for(i=700;i<1000;i++) {46        sum0=sum0+i;47        i0=i;48      }49      #pragma omp critical50      {51        sum= sum+sum0;52      }53    }54  }55 56  known_sum=(999*1000)/2;57  return ((known_sum==sum) && (i0==999) );58}59 60int main()61{62  int i;63  int num_failed=0;64 65  for(i = 0; i < REPETITIONS; i++) {66    if(!test_omp_parallel_sections_lastprivate()) {67      num_failed++;68    }69  }70  return num_failed;71}72