blob: ac4c196d537432cc50c4bd7578378607bdb9b79e [file] [edit]
// RUN: %libomp-compile-and-run | FileCheck %s
#include <omp.h>
#include <stdio.h>
/* This code tests that state pushed for the num_threads clause does not
reach the next parallel region. omp_get_max_threads() + 1 can never
be chosen as team size for the second parallel and could only be the
result of some left-over state from the first parallel.
*/
int main(int argc, char *argv[]) {
unsigned N = omp_get_max_threads();
#pragma omp parallel num_threads(N + 1) if (0)
#pragma omp single
{ printf("BBB %2d\n", omp_get_num_threads()); }
#pragma omp parallel
#pragma omp single
{
if (omp_get_num_threads() <= N)
printf("PASS\n");
}
return 0;
}
// CHECK: PASS