]> granicus.if.org Git - clang/commitdiff
The old logic would add non-struct and non C++ struct variables to the local
authorZhongxing Xu <xuzhongxing@gmail.com>
Fri, 1 Oct 2010 02:47:11 +0000 (02:47 +0000)
committerZhongxing Xu <xuzhongxing@gmail.com>
Fri, 1 Oct 2010 02:47:11 +0000 (02:47 +0000)
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

lib/Analysis/CFG.cpp

index a60c3a6b01c7f489169ed944b1ea98a49e4352a4..4cf0264003bc62d653847cf4d79d752dab8444d0 100644 (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;
 }