From: Zhongxing Xu Date: Fri, 1 Oct 2010 02:47:11 +0000 (+0000) Subject: The old logic would add non-struct and non C++ struct variables to the local X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=26bc70557cba0da863dfc19bb88f0db6613ec625;p=clang The old logic would add non-struct and non C++ struct variables to the local scope. Now we only add C++ struct with non-trivial destructor variables to the local scope. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@115269 91177308-0d34-0410-b5e6-96231b3b80d8 --- diff --git a/lib/Analysis/CFG.cpp b/lib/Analysis/CFG.cpp index a60c3a6b01..4cf0264003 100644 --- a/lib/Analysis/CFG.cpp +++ b/lib/Analysis/CFG.cpp @@ -566,13 +566,12 @@ LocalScope* CFGBuilder::addLocalScopeForVarDecl(VarDecl* VD, // Check if type is a C++ class with non-trivial destructor. if (const RecordType* RT = QT.getTypePtr()->getAs()) if (const CXXRecordDecl* CD = dyn_cast(RT->getDecl())) - if (CD->hasTrivialDestructor()) - return Scope; - - // Add the variable to scope - Scope = createOrReuseLocalScope(Scope); - Scope->addVar(VD); - ScopePos = Scope->begin(); + if (!CD->hasTrivialDestructor()) { + // Add the variable to scope + Scope = createOrReuseLocalScope(Scope); + Scope->addVar(VD); + ScopePos = Scope->begin(); + } return Scope; }