brintos

brintos / llvm-project-archived public Read only

0
0
Text · 1.4 KiB · 0dbbea9 Raw
77 lines · c
1// RUN: %libomp-compile-and-run2#include <stdio.h>3#include "omp_testsuite.h"4 5int test_omp_section_lastprivate()6{7  int i0 = -1;8  int sum = 0;9  int i;10  int sum0 = 0;11  int known_sum;12 13  i0 = -1;14  sum = 0;15 16  #pragma omp parallel17  {18    #pragma omp sections lastprivate(i0) private(i,sum0)19    {20      #pragma omp section21      {22        sum0 = 0;23        for (i = 1; i < 400; i++)24        {25          sum0 = sum0 + i;26          i0 = i;27        }28        #pragma omp critical29        {30          sum = sum + sum0;31        } /*end of critical*/32      } /* end of section */33      #pragma omp section34      {35        sum0 = 0;36        for(i = 400; i < 700; i++)37        {38          sum0 = sum0 + i;39          i0 = i;40        }41        #pragma omp critical42        {43          sum = sum + sum0;44        } /*end of critical*/45      }46      #pragma omp section47      {48        sum0 = 0;49        for(i = 700; i < 1000; i++)50        {51          sum0 = sum0 + i;52          i0 = i;53        }54        #pragma omp critical55        {56          sum = sum + sum0;57        } /*end of critical*/58      } /* end of section */59    } /* end of sections*/60  } /* end of parallel*/61  known_sum = (999 * 1000) / 2;62  return ((known_sum == sum) && (i0 == 999) );63}64 65int main()66{67  int i;68  int num_failed=0;69 70  for(i = 0; i < REPETITIONS; i++) {71    if(!test_omp_section_lastprivate()) {72      num_failed++;73    }74  }75  return num_failed;76}77