From 418af6f6cf97e9484e7f40576f96d2cd9c781e53 Mon Sep 17 00:00:00 2001 From: Alexey Bataev Date: Fri, 28 Sep 2018 17:13:11 +0000 Subject: [PATCH] [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. llvm-svn: 343344 --- openmp/libomptarget/test/mapping/pr38704.c | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/openmp/libomptarget/test/mapping/pr38704.c b/openmp/libomptarget/test/mapping/pr38704.c index d1b3cc42e2f0..3e7135e28411 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; }