14967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// RUN: %clang_cc1 -verify -fopenmp -ast-print %s | FileCheck %s 24967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// RUN: %clang_cc1 -fopenmp -x c++ -std=c++11 -emit-pch -o %t %s 34967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// RUN: %clang_cc1 -fopenmp -std=c++11 -include-pch %t -fsyntax-only -verify %s -ast-print | FileCheck %s 44967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// expected-no-diagnostics 54967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar 64967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar#ifndef HEADER 74967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar#define HEADER 84967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar 94967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainarvoid foo() {} 104967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar 114967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainartemplate <class T> 124967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainarstruct S { 134967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar operator T() {return T();} 144967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar static T TS; 154967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar #pragma omp threadprivate(TS) 164967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar}; 174967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar 184967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK: template <class T = int> struct S { 194967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK: static int TS; 204967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-NEXT: #pragma omp threadprivate(S<int>::TS) 214967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-NEXT: } 224967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK: template <class T = char> struct S { 234967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK: static char TS; 244967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-NEXT: #pragma omp threadprivate(S<char>::TS) 254967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-NEXT: } 264967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK: template <class T> struct S { 274967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK: static T TS; 284967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-NEXT: #pragma omp threadprivate(S::TS) 294967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK: }; 304967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar 314967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainartemplate <typename T, int C> 324967a710c84587c654b56c828382219c3937dacbPirama Arumuga NainarT tmain(T argc, T *argv) { 334967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar T b = argc, c, d, e, f, g; 344967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar static T h; 354967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar S<T> s; 364967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar T arr[C][10], arr1[C]; 374967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar T i, j, a[20]; 384967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar#pragma omp target parallel 394967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar h=2; 404967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar#pragma omp target parallel default(none), private(argc,b) firstprivate(argv) shared (d) if (parallel:argc > 0) num_threads(C) proc_bind(master) reduction(+:c, arr1[argc]) reduction(max:e, arr[:C][0:10]) 414967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar foo(); 424967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar#pragma omp target parallel if (C) num_threads(s) proc_bind(close) reduction(^:e, f, arr[0:C][:argc]) reduction(&& : g) 434967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar foo(); 444967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar#pragma omp target parallel if (target:argc > 0) 454967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar foo(); 464967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar#pragma omp target parallel if (parallel:argc > 0) 474967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar foo(); 484967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar#pragma omp target parallel if (C) 494967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar foo(); 504967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar#pragma omp target parallel map(i) 514967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar foo(); 524967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar#pragma omp target parallel map(a[0:10], i) 534967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar foo(); 544967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar#pragma omp target parallel map(to: i) map(from: j) 554967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar foo(); 564967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar#pragma omp target parallel map(always,alloc: i) 574967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar foo(); 584967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar#pragma omp target parallel nowait 594967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar foo(); 604967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar#pragma omp target parallel depend(in : argc, argv[i:argc], a[:]) 614967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar foo(); 624967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar#pragma omp target parallel defaultmap(tofrom: scalar) 634967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar foo(); 644967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar return 0; 654967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar} 664967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar 674967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK: template <typename T = int, int C = 5> int tmain(int argc, int *argv) { 684967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-NEXT: int b = argc, c, d, e, f, g; 694967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-NEXT: static int h; 704967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-NEXT: S<int> s; 714967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-NEXT: int arr[5][10], arr1[5]; 724967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-NEXT: int i, j, a[20] 734967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-NEXT: #pragma omp target parallel 744967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-NEXT: h = 2; 754967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-NEXT: #pragma omp target parallel default(none) private(argc,b) firstprivate(argv) shared(d) if(parallel: argc > 0) num_threads(5) proc_bind(master) reduction(+: c,arr1[argc]) reduction(max: e,arr[:5][0:10]) 764967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-NEXT: foo() 774967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-NEXT: #pragma omp target parallel if(5) num_threads(s) proc_bind(close) reduction(^: e,f,arr[0:5][:argc]) reduction(&&: g) 784967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-NEXT: foo() 794967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-NEXT: #pragma omp target parallel if(target: argc > 0) 804967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-NEXT: foo() 814967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-NEXT: #pragma omp target parallel if(parallel: argc > 0) 824967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-NEXT: foo() 834967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-NEXT: #pragma omp target parallel if(5) 844967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-NEXT: foo() 854967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-NEXT: #pragma omp target parallel map(tofrom: i) 864967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-NEXT: foo() 874967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-NEXT: #pragma omp target parallel map(tofrom: a[0:10],i) 884967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-NEXT: foo() 894967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-NEXT: #pragma omp target parallel map(to: i) map(from: j) 904967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-NEXT: foo() 914967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-NEXT: #pragma omp target parallel map(always,alloc: i) 924967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-NEXT: foo() 934967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-NEXT: #pragma omp target parallel nowait 944967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-NEXT: foo() 954967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-NEXT: #pragma omp target parallel depend(in : argc,argv[i:argc],a[:]) 964967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-NEXT: foo() 974967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-NEXT: #pragma omp target parallel defaultmap(tofrom: scalar) 984967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-NEXT: foo() 994967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK: template <typename T = char, int C = 1> char tmain(char argc, char *argv) { 1004967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-NEXT: char b = argc, c, d, e, f, g; 1014967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-NEXT: static char h; 1024967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-NEXT: S<char> s; 1034967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-NEXT: char arr[1][10], arr1[1]; 1044967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-NEXT: char i, j, a[20] 1054967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-NEXT: #pragma omp target parallel 1064967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-NEXT: h = 2; 1074967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-NEXT: #pragma omp target parallel default(none) private(argc,b) firstprivate(argv) shared(d) if(parallel: argc > 0) num_threads(1) proc_bind(master) reduction(+: c,arr1[argc]) reduction(max: e,arr[:1][0:10]) 1084967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-NEXT: foo() 1094967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-NEXT: #pragma omp target parallel if(1) num_threads(s) proc_bind(close) reduction(^: e,f,arr[0:1][:argc]) reduction(&&: g) 1104967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-NEXT: foo() 1114967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-NEXT: #pragma omp target parallel if(target: argc > 0) 1124967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-NEXT: foo() 1134967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-NEXT: #pragma omp target parallel if(parallel: argc > 0) 1144967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-NEXT: foo() 1154967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-NEXT: #pragma omp target parallel if(1) 1164967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-NEXT: foo() 1174967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-NEXT: #pragma omp target parallel map(tofrom: i) 1184967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-NEXT: foo() 1194967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-NEXT: #pragma omp target parallel map(tofrom: a[0:10],i) 1204967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-NEXT: foo() 1214967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-NEXT: #pragma omp target parallel map(to: i) map(from: j) 1224967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-NEXT: foo() 1234967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-NEXT: #pragma omp target parallel map(always,alloc: i) 1244967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-NEXT: foo() 1254967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-NEXT: #pragma omp target parallel nowait 1264967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-NEXT: foo() 1274967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-NEXT: #pragma omp target parallel depend(in : argc,argv[i:argc],a[:]) 1284967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-NEXT: foo() 1294967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-NEXT: #pragma omp target parallel defaultmap(tofrom: scalar) 1304967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-NEXT: foo() 1314967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK: template <typename T, int C> T tmain(T argc, T *argv) { 1324967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-NEXT: T b = argc, c, d, e, f, g; 1334967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-NEXT: static T h; 1344967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-NEXT: S<T> s; 1354967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-NEXT: T arr[C][10], arr1[C]; 1364967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-NEXT: T i, j, a[20] 1374967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-NEXT: #pragma omp target parallel 1384967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-NEXT: h = 2; 1394967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-NEXT: #pragma omp target parallel default(none) private(argc,b) firstprivate(argv) shared(d) if(parallel: argc > 0) num_threads(C) proc_bind(master) reduction(+: c,arr1[argc]) reduction(max: e,arr[:C][0:10]) 1404967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-NEXT: foo() 1414967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-NEXT: #pragma omp target parallel if(C) num_threads(s) proc_bind(close) reduction(^: e,f,arr[0:C][:argc]) reduction(&&: g) 1424967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-NEXT: foo() 1434967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-NEXT: #pragma omp target parallel if(target: argc > 0) 1444967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-NEXT: foo() 1454967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-NEXT: #pragma omp target parallel if(parallel: argc > 0) 1464967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-NEXT: foo() 1474967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-NEXT: #pragma omp target parallel if(C) 1484967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-NEXT: foo() 1494967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-NEXT: #pragma omp target parallel map(tofrom: i) 1504967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-NEXT: foo() 1514967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-NEXT: #pragma omp target parallel map(tofrom: a[0:10],i) 1524967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-NEXT: foo() 1534967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-NEXT: #pragma omp target parallel map(to: i) map(from: j) 1544967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-NEXT: foo() 1554967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-NEXT: #pragma omp target parallel map(always,alloc: i) 1564967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-NEXT: foo() 1574967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-NEXT: #pragma omp target parallel nowait 1584967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-NEXT: foo() 1594967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-NEXT: #pragma omp target parallel depend(in : argc,argv[i:argc],a[:]) 1604967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-NEXT: foo() 1614967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-NEXT: #pragma omp target parallel defaultmap(tofrom: scalar) 1624967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-NEXT: foo() 1634967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar 1644967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-LABEL: int main(int argc, char **argv) { 1654967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainarint main (int argc, char **argv) { 1664967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar int i, j, a[20]; 1674967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-NEXT: int i, j, a[20] 1684967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar#pragma omp target parallel 1694967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-NEXT: #pragma omp target parallel 1704967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar foo(); 1714967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-NEXT: foo(); 1724967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar#pragma omp target parallel if (argc > 0) 1734967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-NEXT: #pragma omp target parallel if(argc > 0) 1744967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar foo(); 1754967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-NEXT: foo(); 1764967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar 1774967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar#pragma omp target parallel if (target: argc > 0) 1784967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-NEXT: #pragma omp target parallel if(target: argc > 0) 1794967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar foo(); 1804967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-NEXT: foo(); 1814967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar 1824967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar#pragma omp target parallel if (parallel: argc > 0) 1834967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-NEXT: #pragma omp target parallel if(parallel: argc > 0) 1844967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar foo(); 1854967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-NEXT: foo(); 1864967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar 1874967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar#pragma omp target parallel map(i) if(argc>0) 1884967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-NEXT: #pragma omp target parallel map(tofrom: i) if(argc > 0) 1894967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar foo(); 1904967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-NEXT: foo(); 1914967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar 1924967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar#pragma omp target parallel map(i) 1934967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-NEXT: #pragma omp target parallel map(tofrom: i) 1944967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar foo(); 1954967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-NEXT: foo(); 1964967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar 1974967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar#pragma omp target parallel map(a[0:10], i) 1984967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-NEXT: #pragma omp target parallel map(tofrom: a[0:10],i) 1994967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar foo(); 2004967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-NEXT: foo(); 2014967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar 2024967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar#pragma omp target parallel map(to: i) map(from: j) 2034967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-NEXT: #pragma omp target parallel map(to: i) map(from: j) 2044967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar foo(); 2054967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-NEXT: foo(); 2064967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar 2074967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar#pragma omp target parallel map(always,alloc: i) 2084967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-NEXT: #pragma omp target parallel map(always,alloc: i) 2094967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar foo(); 2104967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-NEXT: foo(); 2114967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar 2124967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar#pragma omp target parallel nowait 2134967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-NEXT: #pragma omp target parallel nowait 2144967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar foo(); 2154967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-NEXT: foo(); 2164967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar 2174967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar#pragma omp target parallel depend(in : argc, argv[i:argc], a[:]) 2184967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-NEXT: #pragma omp target parallel depend(in : argc,argv[i:argc],a[:]) 2194967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar foo(); 2204967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-NEXT: foo(); 2214967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar 2224967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar#pragma omp target parallel defaultmap(tofrom: scalar) 2234967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-NEXT: #pragma omp target parallel defaultmap(tofrom: scalar) 2244967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar foo(); 2254967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar// CHECK-NEXT: foo(); 2264967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar 2274967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar return tmain<int, 5>(argc, &argc) + tmain<char, 1>(argv[0][0], argv[0]); 2284967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar} 2294967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar 2304967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainarextern template int S<int>::TS; 2314967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainarextern template char S<char>::TS; 2324967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar 2334967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar#endif 234