[cfg] Always guard (when AddStaticInitBranches == true) DeclStmts for static variables, not just ones with explicit initializers

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@178322 91177308-0d34-0410-b5e6-96231b3b80d8
diff --git a/lib/Analysis/CFG.cpp b/lib/Analysis/CFG.cpp
index 91a7fdf..1adb8b8 100644
--- a/lib/Analysis/CFG.cpp
+++ b/lib/Analysis/CFG.cpp
@@ -1654,24 +1654,24 @@
   bool HasTemporaries = false;
 
   // Guard static initializers under a branch.
-  CFGBlock *blockBeforeInit = 0;
+  CFGBlock *blockAfterStaticInit = 0;
+
+  if (BuildOpts.AddStaticInitBranches && VD->isStaticLocal()) {
+    // For static variables, we need to create a branch to track
+    // whether or not they are initialized.
+    if (Block) {
+      Succ = Block;
+      Block = 0;
+      if (badCFG)
+        return 0;
+    }
+    blockAfterStaticInit = Succ;
+  }
 
   // Destructors of temporaries in initialization expression should be called
   // after initialization finishes.
   Expr *Init = VD->getInit();
   if (Init) {
-    if (BuildOpts.AddStaticInitBranches && VD->isStaticLocal()) {
-      // For static variables, we need to create a branch to track
-      // whether or not they are initialized.
-      if (Block) {
-        Succ = Block;
-        Block = 0;
-        if (badCFG)
-          return 0;
-      }
-      blockBeforeInit = Succ;
-    }
-
     IsReference = VD->getType()->isReferenceType();
     HasTemporaries = isa<ExprWithCleanups>(Init);
 
@@ -1716,11 +1716,11 @@
     ++ScopePos;
 
   CFGBlock *B = LastBlock;
-  if (blockBeforeInit) {
+  if (blockAfterStaticInit) {
     Succ = B;
     Block = createBlock(false);
     Block->setTerminator(DS);
-    addSuccessor(Block, blockBeforeInit);
+    addSuccessor(Block, blockAfterStaticInit);
     addSuccessor(Block, B);
     B = Block;
   }