diff options
| -rw-r--r-- | clang/lib/Sema/SemaDeclCXX.cpp | 3 | ||||
| -rw-r--r-- | clang/test/OpenMP/declare_target_codegen.cpp | 10 |
2 files changed, 12 insertions, 1 deletions
diff --git a/clang/lib/Sema/SemaDeclCXX.cpp b/clang/lib/Sema/SemaDeclCXX.cpp index fd0f4874592..95ad45d4954 100644 --- a/clang/lib/Sema/SemaDeclCXX.cpp +++ b/clang/lib/Sema/SemaDeclCXX.cpp @@ -14918,7 +14918,8 @@ void Sema::MarkVTableUsed(SourceLocation Loc, CXXRecordDecl *Class, // Do not mark as used if compiling for the device outside of the target // region. if (LangOpts.OpenMP && LangOpts.OpenMPIsDevice && - !isInOpenMPDeclareTargetContext() && !getCurFunctionDecl()) + !isInOpenMPDeclareTargetContext() && + !isInOpenMPTargetExecutionDirective()) return; // Try to insert this class into the map. diff --git a/clang/test/OpenMP/declare_target_codegen.cpp b/clang/test/OpenMP/declare_target_codegen.cpp index 2475c49d3de..87f534e8803 100644 --- a/clang/test/OpenMP/declare_target_codegen.cpp +++ b/clang/test/OpenMP/declare_target_codegen.cpp @@ -157,6 +157,16 @@ struct Bake { template class Bake<int>; #pragma omp end declare target +struct BaseNonT { + virtual ~BaseNonT() {} +}; + +#pragma omp declare target +struct BakeNonT { + virtual ~BakeNonT() {} +}; +#pragma omp end declare target + // CHECK-DAG: declare extern_weak signext i32 @__create() // CHECK-NOT: define {{.*}}{{baz1|baz4|maini1|Base}} |

