diff options
Diffstat (limited to 'clang/lib/Sema/SemaDeclCXX.cpp')
-rw-r--r-- | clang/lib/Sema/SemaDeclCXX.cpp | 9 |
1 files changed, 9 insertions, 0 deletions
diff --git a/clang/lib/Sema/SemaDeclCXX.cpp b/clang/lib/Sema/SemaDeclCXX.cpp index 76623a90d56..117c37b636e 100644 --- a/clang/lib/Sema/SemaDeclCXX.cpp +++ b/clang/lib/Sema/SemaDeclCXX.cpp @@ -4469,6 +4469,15 @@ void Sema::CheckCompletedCXXClass(CXXRecordDecl *Record) { } } } + + if (Record->hasUserDeclaredDestructor()) { + // The Microsoft ABI requires that we perform the destructor body + // checks (i.e. operator delete() lookup) in any translataion unit, as + // any translation unit may need to emit a deleting destructor. + if (Context.getTargetInfo().getCXXABI().isMicrosoft() && + !Record->getDestructor()->isDeleted()) + CheckDestructor(Record->getDestructor()); + } } // C++11 [dcl.constexpr]p8: A constexpr specifier for a non-static member |