1 // no PCH
2 // RUN: %clang_cc1 -fopenmp -fnoopenmp-use-tls -ast-print -include %s -include %s %s -o - | FileCheck %s
3 // with PCH
4 // RUN: %clang_cc1 -fopenmp -fnoopenmp-use-tls -ast-print -chain-include %s -chain-include %s %s -o - | FileCheck %s
5 // no PCH
6 // RUN: %clang_cc1 -fopenmp -ast-print -include %s -include %s %s -o - | FileCheck %s -check-prefix=CHECK-ALLOC-1
7 // RUN: %clang_cc1 -fopenmp -ast-print -include %s -include %s %s -o - | FileCheck %s -check-prefix=CHECK-ALLOC-2
8 // with PCH
9 // RUN: %clang_cc1 -fopenmp -ast-print -chain-include %s -chain-include %s %s -o - | FileCheck %s -check-prefix=CHECK-ALLOC-1
10 // RUN: %clang_cc1 -fopenmp -ast-print -chain-include %s -chain-include %s %s -o - | FileCheck %s -check-prefix=CHECK-ALLOC-2
11 
12 #if !defined(PASS1)
13 #define PASS1
14 
15 typedef void **omp_allocator_handle_t;
16 extern const omp_allocator_handle_t omp_null_allocator;
17 extern const omp_allocator_handle_t omp_default_mem_alloc;
18 extern const omp_allocator_handle_t omp_large_cap_mem_alloc;
19 extern const omp_allocator_handle_t omp_const_mem_alloc;
20 extern const omp_allocator_handle_t omp_high_bw_mem_alloc;
21 extern const omp_allocator_handle_t omp_low_lat_mem_alloc;
22 extern const omp_allocator_handle_t omp_cgroup_mem_alloc;
23 extern const omp_allocator_handle_t omp_pteam_mem_alloc;
24 extern const omp_allocator_handle_t omp_thread_mem_alloc;
25 
26 int a;
27 // CHECK: int a;
28 
29 #elif !defined(PASS2)
30 #define PASS2
31 
32 #pragma omp allocate(a) allocator(omp_default_mem_alloc)
33 // CHECK: #pragma omp allocate(a) allocator(omp_default_mem_alloc)
34 
35 #else
36 
37 // CHECK-LABEL: foo
38 // CHECK-ALLOC-LABEL: foo
foo()39 int foo() {
40   return a;
41   // CHECK: return a;
42   // CHECK-ALLOC-1: return a;
43 }
44 
45 // CHECK-ALLOC-2: return a;
46 
47 #endif
48