1*330d8983SJohannes Doerfert // -------------------------------------------------- 2*330d8983SJohannes Doerfert // Check 'to' and extends before 3*330d8983SJohannes Doerfert // -------------------------------------------------- 4*330d8983SJohannes Doerfert 5*330d8983SJohannes Doerfert // RUN: %libomptarget-compile-generic \ 6*330d8983SJohannes Doerfert // RUN: -DCLAUSE=to -DEXTENDS=BEFORE 7*330d8983SJohannes Doerfert // RUN: %libomptarget-run-generic 2>&1 \ 8*330d8983SJohannes Doerfert // RUN: | %fcheck-generic 9*330d8983SJohannes Doerfert 10*330d8983SJohannes Doerfert // -------------------------------------------------- 11*330d8983SJohannes Doerfert // Check 'from' and extends before 12*330d8983SJohannes Doerfert // -------------------------------------------------- 13*330d8983SJohannes Doerfert 14*330d8983SJohannes Doerfert // RUN: %libomptarget-compile-generic \ 15*330d8983SJohannes Doerfert // RUN: -DCLAUSE=from -DEXTENDS=BEFORE 16*330d8983SJohannes Doerfert // RUN: %libomptarget-run-generic 2>&1 \ 17*330d8983SJohannes Doerfert // RUN: | %fcheck-generic 18*330d8983SJohannes Doerfert 19*330d8983SJohannes Doerfert // -------------------------------------------------- 20*330d8983SJohannes Doerfert // Check 'to' and extends after 21*330d8983SJohannes Doerfert // -------------------------------------------------- 22*330d8983SJohannes Doerfert 23*330d8983SJohannes Doerfert // RUN: %libomptarget-compile-generic \ 24*330d8983SJohannes Doerfert // RUN: -DCLAUSE=to -DEXTENDS=AFTER 25*330d8983SJohannes Doerfert // RUN: %libomptarget-run-generic 2>&1 \ 26*330d8983SJohannes Doerfert // RUN: | %fcheck-generic 27*330d8983SJohannes Doerfert 28*330d8983SJohannes Doerfert // -------------------------------------------------- 29*330d8983SJohannes Doerfert // Check 'from' and extends after 30*330d8983SJohannes Doerfert // -------------------------------------------------- 31*330d8983SJohannes Doerfert 32*330d8983SJohannes Doerfert // RUN: %libomptarget-compile-generic \ 33*330d8983SJohannes Doerfert // RUN: -DCLAUSE=from -DEXTENDS=AFTER 34*330d8983SJohannes Doerfert // RUN: %libomptarget-run-generic 2>&1 \ 35*330d8983SJohannes Doerfert // RUN: | %fcheck-generic 36*330d8983SJohannes Doerfert 37*330d8983SJohannes Doerfert // END. 38*330d8983SJohannes Doerfert 39*330d8983SJohannes Doerfert #include <stdio.h> 40*330d8983SJohannes Doerfert 41*330d8983SJohannes Doerfert #define BEFORE 0 42*330d8983SJohannes Doerfert #define AFTER 1 43*330d8983SJohannes Doerfert 44*330d8983SJohannes Doerfert #if EXTENDS == BEFORE 45*330d8983SJohannes Doerfert #define SMALL 2 : 3 46*330d8983SJohannes Doerfert #define LARGE 0 : 5 47*330d8983SJohannes Doerfert #elif EXTENDS == AFTER 48*330d8983SJohannes Doerfert #define SMALL 0 : 3 49*330d8983SJohannes Doerfert #define LARGE 0 : 5 50*330d8983SJohannes Doerfert #else 51*330d8983SJohannes Doerfert #error EXTENDS undefined 52*330d8983SJohannes Doerfert #endif 53*330d8983SJohannes Doerfert main()54*330d8983SJohannes Doerfertint main() { 55*330d8983SJohannes Doerfert int arr[5]; 56*330d8983SJohannes Doerfert 57*330d8983SJohannes Doerfert // CHECK-NOT: omptarget 58*330d8983SJohannes Doerfert #pragma omp target data map(alloc : arr[LARGE]) 59*330d8983SJohannes Doerfert { 60*330d8983SJohannes Doerfert #pragma omp target update CLAUSE(arr[SMALL]) 61*330d8983SJohannes Doerfert } 62*330d8983SJohannes Doerfert 63*330d8983SJohannes Doerfert // CHECK: success 64*330d8983SJohannes Doerfert fprintf(stderr, "success\n"); 65*330d8983SJohannes Doerfert 66*330d8983SJohannes Doerfert // CHECK-NOT: omptarget 67*330d8983SJohannes Doerfert #pragma omp target data map(alloc : arr[SMALL]) 68*330d8983SJohannes Doerfert { 69*330d8983SJohannes Doerfert #pragma omp target update CLAUSE(arr[LARGE]) 70*330d8983SJohannes Doerfert } 71*330d8983SJohannes Doerfert 72*330d8983SJohannes Doerfert // CHECK: success 73*330d8983SJohannes Doerfert fprintf(stderr, "success\n"); 74*330d8983SJohannes Doerfert 75*330d8983SJohannes Doerfert return 0; 76*330d8983SJohannes Doerfert } 77