diff options
author | Reid Kleckner <reid@kleckner.net> | 2014-06-12 22:39:12 +0000 |
---|---|---|
committer | Reid Kleckner <reid@kleckner.net> | 2014-06-12 22:39:12 +0000 |
commit | 6713086bca8e26ff22343f79172b7dc9fe221aa2 (patch) | |
tree | 0a970afba31c5b838640eb823846b2bf843a81c6 /clang/lib/Sema/SemaDeclCXX.cpp | |
parent | d90a8746dfc1dd19775ae6e1efef6b3242dc6553 (diff) | |
download | bcm5719-llvm-6713086bca8e26ff22343f79172b7dc9fe221aa2.tar.gz bcm5719-llvm-6713086bca8e26ff22343f79172b7dc9fe221aa2.zip |
Check the access of operator delete from the destructor context
Previously we would do the access check from the context of
MarkVTableUsed.
Also update this test to C++11, since that is typically used with the MS
C++ ABI.
Fixes PR20005.
llvm-svn: 210850
Diffstat (limited to 'clang/lib/Sema/SemaDeclCXX.cpp')
-rw-r--r-- | clang/lib/Sema/SemaDeclCXX.cpp | 4 |
1 files changed, 3 insertions, 1 deletions
diff --git a/clang/lib/Sema/SemaDeclCXX.cpp b/clang/lib/Sema/SemaDeclCXX.cpp index d9d4097fb15..57e6550cec5 100644 --- a/clang/lib/Sema/SemaDeclCXX.cpp +++ b/clang/lib/Sema/SemaDeclCXX.cpp @@ -12462,7 +12462,9 @@ void Sema::MarkVTableUsed(SourceLocation Loc, CXXRecordDecl *Class, Class->hasUserDeclaredDestructor() && !Class->getDestructor()->isDefined() && !Class->getDestructor()->isDeleted()) { - CheckDestructor(Class->getDestructor()); + CXXDestructorDecl *DD = Class->getDestructor(); + ContextRAII SavedContext(*this, DD); + CheckDestructor(DD); } } |