llvm-project/clang/test/AST/ast-print-openacc-declare-construct.cpp
erichkeane 6263de90df [OpenACC] Implement 'modifier-list' sema/AST
OpenACC 3.3-NEXT has changed the way tags for copy, copyin, copyout, and
create clauses are specified, and end up adding a few extras, and
permits them as a list.  This patch encodes these as bitmask enum so
they can be stored succinctly, but still diagnose reasonably.
2025-04-04 12:32:33 -07:00

53 lines
1.6 KiB
C++

// 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)
}