aboutsummaryrefslogtreecommitdiff
path: root/clang/test/AST/ast-print-openacc-declare-construct.cpp
blob: 2a61b08c5500bf98472b377d079a27be2066845c (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
// 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)
}