llvm-project/openmp/runtime/test/tasking/omp_task_priority3.c
Jonathan Peyton d67c91b5e7 [OpenMP] Insert missing variable update inside loop
While loop within task priority code did not have necessary update of
variable which could lead to hangs if two threads collided when both
attempted to execute the compare_and_exchange.

Fixes: https://github.com/llvm/llvm-project/issues/62867
Differential Revision: https://reviews.llvm.org/D151138
2023-05-23 09:19:04 -05:00

34 lines
626 B
C

// RUN: %libomp-compile && env OMP_MAX_TASK_PRIORITY=42 %libomp-run
#include <stdio.h>
#include <stdlib.h>
#include <omp.h>
int a = 0;
int main(void) {
int i;
int max_task_priority = omp_get_max_task_priority();
if (max_task_priority != 42) {
fprintf(stderr,
"error: omp_get_max_task_priority() returned %d instead of 42\n",
max_task_priority);
exit(EXIT_FAILURE);
}
for (i = 0; i < 250; ++i) {
#pragma omp parallel
{
#pragma omp task priority(42)
{
#pragma omp atomic
a++;
}
}
}
printf("a = %d\n", a);
return EXIT_SUCCESS;
}