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.

llvm-svn: 115269
This commit is contained in:
Zhongxing Xu 2010-10-01 02:47:11 +00:00
parent f51de67640
commit ea360a3b1a
1 changed files with 6 additions and 7 deletions

View File

@ -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<RecordType>())
if (const CXXRecordDecl* CD = dyn_cast<CXXRecordDecl>(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;
}