diff options
author | Eli Friedman <eli.friedman@gmail.com> | 2009-12-20 22:29:11 +0000 |
---|---|---|
committer | Eli Friedman <eli.friedman@gmail.com> | 2009-12-20 22:29:11 +0000 |
commit | dd4e485a0db4e651f28281cd3eda93aad6ee04fd (patch) | |
tree | 881babde863e8cb5d2af528475bbe944804002b5 /lib/Sema/SemaDecl.cpp | |
parent | 33c2da9b3abdade4f0df4f90962fb8c518967fc4 (diff) |
Make sure we instantiate the destructor for variables initialized by
assignment.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@91798 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib/Sema/SemaDecl.cpp')
-rw-r--r-- | lib/Sema/SemaDecl.cpp | 9 |
1 files changed, 9 insertions, 0 deletions
diff --git a/lib/Sema/SemaDecl.cpp b/lib/Sema/SemaDecl.cpp index a80d62a473..f087bcb95c 100644 --- a/lib/Sema/SemaDecl.cpp +++ b/lib/Sema/SemaDecl.cpp @@ -3658,6 +3658,15 @@ void Sema::AddInitializerToDecl(DeclPtrTy dcl, ExprArg init, bool DirectInit) { assert(Deleted && "Unrecorded tentative definition?"); Deleted=Deleted; } + if (getLangOptions().CPlusPlus) { + // Make sure we mark the destructor as used if necessary. + QualType InitType = VDecl->getType(); + if (const ArrayType *Array = Context.getAsArrayType(InitType)) + InitType = Context.getBaseElementType(Array); + if (InitType->isRecordType()) + FinalizeVarWithDestructor(VDecl, InitType); + } + return; } |