brintos

brintos / llvm-project-archived public Read only

0
0
Text · 812 B · 39712ea Raw
43 lines · c
1// RUN: %libomp-compile-and-run2 3// UNSUPPORTED: gcc-4, gcc-5, gcc-6, gcc-7, gcc-84 5#include <stdio.h>6#include <stdlib.h>7 8int a = 0, b = 1;9 10int main(int argc, char **argv) {11 12  #pragma omp parallel13  #pragma omp single14  {15    #pragma omp taskgroup task_reduction(+: a) task_reduction(*: b)16    {17      int i;18      for (i = 1; i <= 5; ++i) {19        #pragma omp task in_reduction(+: a) in_reduction(*: b)20        {21          a += i;22          b *= i;23          #pragma omp task in_reduction(+: a)24          {25            a += i;26          }27        }28      }29    }30  }31 32  if (a != 30) {33    fprintf(stderr, "error: a != 30. Instead a = %d\n", a);34    exit(EXIT_FAILURE);35  }36  if (b != 120) {37    fprintf(stderr, "error: b != 120. Instead b = %d\n", b);38    exit(EXIT_FAILURE);39  }40 41  return EXIT_SUCCESS;42}43