aboutsummaryrefslogtreecommitdiff
path: root/lib/Sema/SemaDecl.cpp
diff options
context:
space:
mode:
authorEli Friedman <eli.friedman@gmail.com>2009-12-20 22:29:11 +0000
committerEli Friedman <eli.friedman@gmail.com>2009-12-20 22:29:11 +0000
commitdd4e485a0db4e651f28281cd3eda93aad6ee04fd (patch)
tree881babde863e8cb5d2af528475bbe944804002b5 /lib/Sema/SemaDecl.cpp
parent33c2da9b3abdade4f0df4f90962fb8c518967fc4 (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.cpp9
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;
}