summaryrefslogtreecommitdiff
path: root/offload/test/mapping/low_alignment.c
diff options
context:
space:
mode:
Diffstat (limited to 'offload/test/mapping/low_alignment.c')
-rw-r--r--offload/test/mapping/low_alignment.c49
1 files changed, 49 insertions, 0 deletions
diff --git a/offload/test/mapping/low_alignment.c b/offload/test/mapping/low_alignment.c
new file mode 100644
index 000000000000..615a5a9c3111
--- /dev/null
+++ b/offload/test/mapping/low_alignment.c
@@ -0,0 +1,49 @@
+// RUN: %libomptarget-compilexx-run-and-check-generic
+
+#include <omp.h>
+#include <stdio.h>
+
+int main() {
+ struct S {
+ int i;
+ int j;
+ } s;
+ s.i = 20;
+ s.j = 30;
+#pragma omp target data map(tofrom : s)
+ {
+#pragma omp target map(from : s.i, s.j)
+ {
+ s.i = 21;
+ s.j = 31;
+ }
+ }
+ if (s.i == 21 && s.j == 31)
+ printf("PASS 1\n");
+ // CHECK: PASS 1
+
+ struct T {
+ int a;
+ int b;
+ int c;
+ int d;
+ int i;
+ int j;
+ } t;
+ t.a = 10;
+ t.i = 20;
+ t.j = 30;
+#pragma omp target data map(from : t.i, t.j)
+ {
+#pragma omp target map(from : t.a)
+ {
+ t.a = 11;
+ t.i = 21;
+ t.j = 31;
+ }
+ }
+ if (t.a == 11 && t.i == 21 && t.j == 31)
+ printf("PASS 2\n");
+ // CHECK: PASS 2
+ return 0;
+}