// RUN: %clang_cc1 -fopenacc -ast-print %s -o - | FileCheck %s int *Global, *Global2; int GlobalArray[5]; int GlobalArray2[5]; // CHECK: #pragma acc declare deviceptr(Global) copyin(GlobalArray) #pragma acc declare deviceptr(Global), copyin(GlobalArray) // CHECK: #pragma acc declare create(zero: Global2, GlobalArray2) #pragma acc declare create(zero: Global2, GlobalArray2) namespace NS { int NSVar; int NSArray[5]; // CHECK: #pragma acc declare create(NSVar, NSArray) #pragma acc declare create(NSVar, NSArray) } struct Struct { static const int StaticMem = 5; static const int StaticMemArray[5]; // CHECK: #pragma acc declare copyin(always, alwaysin: StaticMem, StaticMemArray) #pragma acc declare copyin(always, alwaysin: StaticMem, StaticMemArray) void MemFunc1(int Arg) { int Local; int LocalArray[5]; // CHECK: #pragma acc declare present(Arg, Local, LocalArray) #pragma acc declare present(Arg, Local, LocalArray) } void MemFunc2(int Arg); }; void Struct::MemFunc2(int Arg) { int Local; int LocalArray[5]; // CHECK: #pragma acc declare present(Arg, Local, LocalArray) #pragma acc declare present(Arg, Local, LocalArray) } void NormalFunc(int Arg) { int Local; int LocalArray[5]; // CHECK: #pragma acc declare present(Arg, Local, LocalArray) #pragma acc declare present(Arg, Local, LocalArray) } void NormalFunc2(int *Arg) { int Local; int LocalArray[5]; extern int ExternLocal; // CHECK: #pragma acc declare deviceptr(Arg) device_resident(Local) link(ExternLocal) #pragma acc declare deviceptr(Arg) device_resident(Local) link(ExternLocal) }