diff options
author | Alexey Bataev <a.bataev@hotmail.com> | 2018-09-28 17:13:11 +0000 |
---|---|---|
committer | Alexey Bataev <a.bataev@hotmail.com> | 2018-09-28 17:13:11 +0000 |
commit | 5cb70eff1759f3e28dabe0e874071b3fd00b49aa (patch) | |
tree | 4aae7798597b38aedca8575908bdd1cda1740232 /openmp/libomptarget | |
parent | 1560c8408ece77a8695140bf1157b24f0714bc00 (diff) |
[OPENMP] Add the test to check that the libomptarget does not cause
infinite loop on removing non-mapped pointer-with-object.
Added test to check that libomptarget does not cause infinite loop when
trying to unmap the pointer-with-object data that was not previously
mapped.
Diffstat (limited to 'openmp/libomptarget')
-rw-r--r-- | openmp/libomptarget/test/mapping/pr38704.c | 8 |
1 files changed, 7 insertions, 1 deletions
diff --git a/openmp/libomptarget/test/mapping/pr38704.c b/openmp/libomptarget/test/mapping/pr38704.c index d1b3cc42e2f..3e7135e2841 100644 --- a/openmp/libomptarget/test/mapping/pr38704.c +++ b/openmp/libomptarget/test/mapping/pr38704.c @@ -16,16 +16,20 @@ typedef struct { } StructWithPtrs; int main(int argc, char *argv[]) { - StructWithPtrs s; + StructWithPtrs s, s2; s.ptr1 = malloc(sizeof(int)); s.ptr2 = malloc(2 * sizeof(int)); + s2.ptr1 = malloc(sizeof(int)); + s2.ptr2 = malloc(2 * sizeof(int)); +#pragma omp target enter data map(to: s2.ptr2[0:1]) #pragma omp target map(s.ptr1[0:1], s.ptr2[0:2]) { s.ptr1[0] = 1; s.ptr2[0] = 2; s.ptr2[1] = 3; } +#pragma omp target exit data map(from: s2.ptr1[0:1], s2.ptr2[0:1]) // CHECK: s.ptr1[0] = 1 // CHECK: s.ptr2[0] = 2 @@ -36,6 +40,8 @@ int main(int argc, char *argv[]) { free(s.ptr1); free(s.ptr2); + free(s2.ptr1); + free(s2.ptr2); return 0; } |