Clang Project

clang_source_code/test/PCH/chain-openmp-allocate.cpp
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
15typedef void **omp_allocator_handle_t;
16extern const omp_allocator_handle_t omp_default_mem_alloc;
17extern const omp_allocator_handle_t omp_large_cap_mem_alloc;
18extern const omp_allocator_handle_t omp_const_mem_alloc;
19extern const omp_allocator_handle_t omp_high_bw_mem_alloc;
20extern const omp_allocator_handle_t omp_low_lat_mem_alloc;
21extern const omp_allocator_handle_t omp_cgroup_mem_alloc;
22extern const omp_allocator_handle_t omp_pteam_mem_alloc;
23extern const omp_allocator_handle_t omp_thread_mem_alloc;
24
25int a;
26// CHECK: int a;
27
28#elif !defined(PASS2)
29#define PASS2
30
31#pragma omp allocate(a) allocator(omp_default_mem_alloc)
32// CHECK: #pragma omp allocate(a) allocator(omp_default_mem_alloc)
33
34#else
35
36// CHECK-LABEL: foo
37// CHECK-ALLOC-LABEL: foo
38int foo() {
39  return a;
40  // CHECK: return a;
41  // CHECK-ALLOC-1: return a;
42}
43
44// CHECK-ALLOC-2: return a;
45
46#endif
47