Add static analyzer support for conditionally executing static initializers.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@178318 91177308-0d34-0410-b5e6-96231b3b80d8
diff --git a/lib/Analysis/CFG.cpp b/lib/Analysis/CFG.cpp
index f436ef3..91a7fdf 100644
--- a/lib/Analysis/CFG.cpp
+++ b/lib/Analysis/CFG.cpp
@@ -1665,6 +1665,7 @@
       // whether or not they are initialized.
       if (Block) {
         Succ = Block;
+        Block = 0;
         if (badCFG)
           return 0;
       }
@@ -1714,15 +1715,14 @@
   if (ScopePos && VD == *ScopePos)
     ++ScopePos;
 
-  CFGBlock *B = Block ? Block : LastBlock;
+  CFGBlock *B = LastBlock;
   if (blockBeforeInit) {
     Succ = B;
-    Block = 0;
-    CFGBlock *branchBlock = createBlock(false);
-    branchBlock->setTerminator(DS);
-    addSuccessor(branchBlock, blockBeforeInit);
-    addSuccessor(branchBlock, B);
-    B = branchBlock;
+    Block = createBlock(false);
+    Block->setTerminator(DS);
+    addSuccessor(Block, blockBeforeInit);
+    addSuccessor(Block, B);
+    B = Block;
   }
 
   return B;