From 02d04d569edd39a17f27995565b7b65ac06afb35 Mon Sep 17 00:00:00 2001 From: Alexey Bataev Date: Tue, 10 Dec 2019 16:12:53 -0500 Subject: [OPENMP50]Do not mark the function as used if referenced only in declare variant directive. If the function is used only in declare variant directive as a variant function, it should not be marked as used to prevent emission of the target-specific functions. Build the reference in the unevaluated context. --- clang/test/OpenMP/declare_variant_mixed_codegen.cpp | 11 +++++++++++ 1 file changed, 11 insertions(+) (limited to 'clang/test') diff --git a/clang/test/OpenMP/declare_variant_mixed_codegen.cpp b/clang/test/OpenMP/declare_variant_mixed_codegen.cpp index dea42d1c217..0c13f5f2f12 100644 --- a/clang/test/OpenMP/declare_variant_mixed_codegen.cpp +++ b/clang/test/OpenMP/declare_variant_mixed_codegen.cpp @@ -27,6 +27,7 @@ // CHECK-DAG: ret i32 85 // CHECK-DAG: ret i32 86 // CHECK-DAG: ret i32 87 +// CHECK-DAG: ret i32 88 // CHECK-NOT: ret i32 {{1|4|81|84}} #ifndef HEADER @@ -45,8 +46,10 @@ int test(); #pragma omp declare variant(test) match(implementation = {vendor(llvm)}, device={kind(cpu)}) int call() { return 1; } +static int stat_unused_no_emit() { return 1; } static int stat_unused_(); #pragma omp declare variant(stat_unused_) match(implementation = {vendor(llvm)}, device={kind(cpu)}) +#pragma omp declare variant(stat_unused_no_emit) match(implementation = {vendor(xxx)}, device={kind(gpu)}) static int stat_unused() { return 1; } static int stat_used_(); @@ -134,4 +137,12 @@ int fn_variant2() { return 1; } #pragma omp declare variant(fn_variant2) match(implementation = {vendor(llvm)}, device={kind(fpga)}) int fn2() { return 87; } +#pragma omp declare variant(stat_unused_no_emit) match(implementation = {vendor(xxx)}, device={kind(gpu)}) +template +static T stat_unused_T() { return 88; } + +int bazzzzzzzz() { + return stat_unused_T(); +} + #endif // HEADER -- cgit v1.2.3