summaryrefslogtreecommitdiffstats
path: root/clang/lib/Sema/SemaDeclCXX.cpp
diff options
context:
space:
mode:
authorReid Kleckner <reid@kleckner.net>2014-06-12 22:39:12 +0000
committerReid Kleckner <reid@kleckner.net>2014-06-12 22:39:12 +0000
commit6713086bca8e26ff22343f79172b7dc9fe221aa2 (patch)
tree0a970afba31c5b838640eb823846b2bf843a81c6 /clang/lib/Sema/SemaDeclCXX.cpp
parentd90a8746dfc1dd19775ae6e1efef6b3242dc6553 (diff)
downloadbcm5719-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.cpp4
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);
}
}
OpenPOWER on IntegriCloud