diff options
Diffstat (limited to 'offload/test/mapping/present/zero_length_array_section.c')
| -rw-r--r-- | offload/test/mapping/present/zero_length_array_section.c | 36 |
1 files changed, 36 insertions, 0 deletions
diff --git a/offload/test/mapping/present/zero_length_array_section.c b/offload/test/mapping/present/zero_length_array_section.c new file mode 100644 index 000000000000..e903a268ef33 --- /dev/null +++ b/offload/test/mapping/present/zero_length_array_section.c @@ -0,0 +1,36 @@ +// RUN: %libomptarget-compile-generic +// RUN: %libomptarget-run-fail-generic 2>&1 \ +// RUN: | %fcheck-generic + +#include <stdio.h> + +int main() { + int arr[5]; + + // CHECK: addr=0x[[#%x,HOST_ADDR:]] + fprintf(stderr, "addr=%p\n", arr); + + // CHECK-NOT: omptarget +#pragma omp target data map(alloc : arr[0 : 5]) +#pragma omp target map(present, alloc : arr[0 : 0]) + ; + + // CHECK: arr is present + fprintf(stderr, "arr is present\n"); + + // arr[0:0] doesn't create an actual mapping in the first directive. + // + // CHECK: omptarget message: device mapping required by 'present' map type modifier does not exist for host address 0x{{0*}}[[#HOST_ADDR]] (0 bytes) + // CHECK: omptarget error: Call to getTargetPointer returned null pointer ('present' map type modifier). + // CHECK: omptarget error: Call to targetDataBegin failed, abort target. + // CHECK: omptarget error: Failed to process data before launching the kernel. + // CHECK: omptarget fatal error 1: failure of target construct while offloading is mandatory +#pragma omp target data map(alloc : arr[0 : 0]) +#pragma omp target map(present, alloc : arr[0 : 0]) + ; + + // CHECK-NOT: arr is present + fprintf(stderr, "arr is present\n"); + + return 0; +} |
