Files
clang-p2996/openmp/libomptarget/test/offloading/bug64959_compile_only.c
Johannes Doerfert d2c37fc4f7 [Attributor][FIX] Avoid dangling stack references in map
The old code did not account for new queries during an update, which
caused us to leave stack RQIs in the map. We are now explicit about
temporary vs non-temporary RQIs.

Fixes: https://github.com/llvm/llvm-project/issues/64959
2023-08-24 16:28:10 -07:00

41 lines
945 B
C

// RUN: %libomptarget-compile-generic
// RUN: %libomptarget-compileopt-generic
#include <stdio.h>
#define N 10
int main(void) {
long int aa = 0;
int res = 0;
int ng = 12;
int cmom = 14;
int nxyz = 5000;
#pragma omp target teams distribute num_teams(nxyz) \
thread_limit(ng *(cmom - 1)) map(tofrom : aa)
for (int gid = 0; gid < nxyz; gid++) {
#pragma omp parallel for collapse(2)
for (unsigned int g = 0; g < ng; g++) {
for (unsigned int l = 0; l < cmom - 1; l++) {
int a = 0;
#pragma omp parallel for reduction(+ : a)
for (int i = 0; i < N; i++) {
a += i;
}
#pragma omp atomic
aa += a;
}
}
}
long exp = (long)ng * (cmom - 1) * nxyz * (N * (N - 1) / 2);
printf("The result is = %ld exp:%ld!\n", aa, exp);
if (aa != exp) {
printf("Failed %ld\n", aa);
return 1;
}
// CHECK: Success
printf("Success\n");
return 0;
}