xref: /llvm-project/clang/test/OpenMP/declare_variant.cpp (revision 150f7cedfb2e072804f4a0887d14c97a7fe3f374)
1*150f7cedSZahira Ammarguellat // RUN: %clang_cc1 -triple x86_64-unknown-unknown -fopenmp -verify %s
2*150f7cedSZahira Ammarguellat 
3*150f7cedSZahira Ammarguellat namespace {
4*150f7cedSZahira Ammarguellat // TODO this must be fixed. This warning shouldn't be generated.
5*150f7cedSZahira Ammarguellat // expected-warning@+1{{function '(anonymous namespace)::bar' has internal linkage but is not defined}}
6*150f7cedSZahira Ammarguellat void bar();
7*150f7cedSZahira Ammarguellat } // namespace
8*150f7cedSZahira Ammarguellat 
9*150f7cedSZahira Ammarguellat #pragma omp begin declare variant match(user = {condition(1)})
bar()10*150f7cedSZahira Ammarguellat void bar() {
11*150f7cedSZahira Ammarguellat }
12*150f7cedSZahira Ammarguellat #pragma omp end declare variant
13*150f7cedSZahira Ammarguellat 
14*150f7cedSZahira Ammarguellat // expected-warning@+1{{function 'baz' has internal linkage but is not defined}}
15*150f7cedSZahira Ammarguellat static void baz();
16*150f7cedSZahira Ammarguellat #pragma omp begin declare variant match(device = {kind(nohost)})
baz()17*150f7cedSZahira Ammarguellat static void baz() {}
18*150f7cedSZahira Ammarguellat #pragma omp end declare variant
19*150f7cedSZahira Ammarguellat 
20*150f7cedSZahira Ammarguellat #pragma omp begin declare variant match(device = {kind(host)})
foo()21*150f7cedSZahira Ammarguellat static void foo() {}
22*150f7cedSZahira Ammarguellat #pragma omp end declare variant
23*150f7cedSZahira Ammarguellat 
main()24*150f7cedSZahira Ammarguellat int main() {
25*150f7cedSZahira Ammarguellat   foo();
26*150f7cedSZahira Ammarguellat   // expected-note@+1{{used here}}
27*150f7cedSZahira Ammarguellat   baz();
28*150f7cedSZahira Ammarguellat   // expected-note@+1{{used here}}
29*150f7cedSZahira Ammarguellat   bar();
30*150f7cedSZahira Ammarguellat 
31*150f7cedSZahira Ammarguellat   return 0;
32*150f7cedSZahira Ammarguellat }
33