Index: clang/lib/Sema/SemaOpenMP.cpp =================================================================== --- clang/lib/Sema/SemaOpenMP.cpp +++ clang/lib/Sema/SemaOpenMP.cpp @@ -6683,6 +6683,7 @@ D.setFunctionDefinitionKind(FunctionDefinitionKind::Declaration); Decl *BaseD = HandleDeclarator(S, D, TemplateParamLists); BaseD->setImplicit(true); + BaseD->setIsUsed(); if (auto *BaseTemplD = dyn_cast(BaseD)) Bases.push_back(BaseTemplD->getTemplatedDecl()); else Index: clang/test/OpenMP/declare_variant.cpp =================================================================== --- /dev/null +++ clang/test/OpenMP/declare_variant.cpp @@ -0,0 +1,13 @@ +// RUN: %clang_cc1 -triple x86_64-unknown-unknown -fopenmp -verify %s + +// expected-no-diagnostics + +#pragma omp begin declare variant match(device = {kind(host)}) +static void foo(){}; +#pragma omp end declare variant + +int main() { + foo(); + + return 0; +}