pdhaliwal added a comment. I modified the declare_mapper_target to print the contents of array after target region and found the following output:
2 3 4 5 6 7 8 9 10 11 Sum = 65 Program: #include <cstdio> #include <cstdlib> #define NUM 10 int main() { int *c= new int[NUM]; for (int i = 0; i < NUM; i++) { c[i] = 1; } #pragma omp target teams distribute parallel for map(tofrom: c[0:NUM]) for (int i = 0; i < NUM; i++) { c[i]++; } int sum = 0; for (int i = 0; i < NUM; i++) { sum += c[i]; printf("%d ", c[i]); } // CHECK: Sum = 2048 printf("Sum = %d\n", sum); return 0; } Different variant of the same program is producing correct output, #include <cstdio> #include <cstdlib> #define NUM 10 int main() { int *c= new int[NUM]; for (int i = 0; i < NUM; i++) { c[i] = 1; } int *b = new int[NUM]; #pragma omp target teams distribute parallel for map(tofrom: c[0:NUM], b[0:NUM]) for (int i = 0; i < NUM; i++) { b[i] = c[i] + 1; } int sum = 0; for (int i = 0; i < NUM; i++) { sum += b[i]; printf("%d ", b[i]); } // CHECK: Sum = 2048 printf("Sum = %d\n", sum); return 0; } Output (this is the right answer): 2 2 2 2 2 2 2 2 2 2 Sum = 20 On internal amd-stg-open branch, this patch works fine, so issue is only with the trunk. I compared the generated IR before and after applying this patch, I didn't see anything suspicious. (but can't be 100% sure). Repository: rG LLVM Github Monorepo CHANGES SINCE LAST ACTION https://reviews.llvm.org/D102107/new/ https://reviews.llvm.org/D102107 _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits