diff options
Diffstat (limited to 'clang/lib/Sema/SemaDecl.cpp')
-rw-r--r-- | clang/lib/Sema/SemaDecl.cpp | 6 |
1 files changed, 6 insertions, 0 deletions
diff --git a/clang/lib/Sema/SemaDecl.cpp b/clang/lib/Sema/SemaDecl.cpp index d34d9b5688c..9c442a61ce2 100644 --- a/clang/lib/Sema/SemaDecl.cpp +++ b/clang/lib/Sema/SemaDecl.cpp @@ -10442,6 +10442,12 @@ Sema::FinalizeDeclaration(Decl *ThisDecl) { AllowedInit = VD->getInit()->isConstantInitializer( Context, VD->getType()->isReferenceType()); + // Also make sure that destructor, if there is one, is empty. + if (AllowedInit) + if (CXXRecordDecl *RD = VD->getType()->getAsCXXRecordDecl()) + AllowedInit = + isEmptyCudaDestructor(VD->getLocation(), RD->getDestructor()); + if (!AllowedInit) { Diag(VD->getLocation(), VD->hasAttr<CUDASharedAttr>() ? diag::err_shared_var_init |