xref: /llvm-project/openmp/runtime/test/affinity/bug-nested.c (revision aa5cdafa405e32956226dcc1cacd86430ac9ad1a)
1*9355d0dcSJonathan Peyton // RUN: %libomp-compile && env KMP_AFFINITY=compact %libomp-run
2*9355d0dcSJonathan Peyton 
3*9355d0dcSJonathan Peyton #include <stdio.h>
4*9355d0dcSJonathan Peyton #include <stdint.h>
5*9355d0dcSJonathan Peyton #include <omp.h>
6*9355d0dcSJonathan Peyton #include "omp_testsuite.h"
7*9355d0dcSJonathan Peyton 
test_nested_affinity_bug()8*9355d0dcSJonathan Peyton int test_nested_affinity_bug() {
9*9355d0dcSJonathan Peyton   int a = 0;
10*9355d0dcSJonathan Peyton   omp_set_nested(1);
11*9355d0dcSJonathan Peyton   #pragma omp parallel num_threads(2) shared(a)
12*9355d0dcSJonathan Peyton   {
13*9355d0dcSJonathan Peyton     #pragma omp parallel num_threads(2) shared(a) proc_bind(close)
14*9355d0dcSJonathan Peyton     {
15*9355d0dcSJonathan Peyton       #pragma omp atomic
16*9355d0dcSJonathan Peyton       a++;
17*9355d0dcSJonathan Peyton     }
18*9355d0dcSJonathan Peyton   }
19*9355d0dcSJonathan Peyton   return 1;
20*9355d0dcSJonathan Peyton }
21*9355d0dcSJonathan Peyton 
main()22*9355d0dcSJonathan Peyton int main() {
23*9355d0dcSJonathan Peyton   int i;
24*9355d0dcSJonathan Peyton   int num_failed = 0;
25*9355d0dcSJonathan Peyton 
26*9355d0dcSJonathan Peyton   for (i = 0; i < REPETITIONS; i++) {
27*9355d0dcSJonathan Peyton     if (!test_nested_affinity_bug()) {
28*9355d0dcSJonathan Peyton       num_failed++;
29*9355d0dcSJonathan Peyton     }
30*9355d0dcSJonathan Peyton   }
31*9355d0dcSJonathan Peyton   return num_failed;
32*9355d0dcSJonathan Peyton }
33