diff --git a/lib/Analysis/LiveVariables.cpp b/lib/Analysis/LiveVariables.cpp
index b704b2d..4cef30c 100644
--- a/lib/Analysis/LiveVariables.cpp
+++ b/lib/Analysis/LiveVariables.cpp
@@ -73,7 +73,8 @@
   void VisitAssign(BinaryOperator* B);
   void VisitDeclStmt(DeclStmt* DS);
   void VisitUnaryOperator(UnaryOperator* U);
-  void Visit(Stmt *S);
+  void Visit(Stmt *S);  
+  void VisitTerminator(Stmt* S); 
 };
       
 void TransferFuncs::Visit(Stmt *S) {
@@ -90,6 +91,23 @@
     // For block-level expressions, mark that they are live.
     LiveState(S,AD) = Alive;
 }
+  
+void TransferFuncs::VisitTerminator(Stmt* S) {
+  return;
+  
+  for (Stmt::child_iterator I = S->child_begin(), E = S->child_end();
+       I != E; ++I) {
+    
+    Stmt* Child = *I;
+    if (!Child) continue;
+    
+    if (getCFG().isBlkExpr(Child)) {
+      LiveState(Child, AD) = Alive;
+      return;  // Only one "condition" expression.
+    }
+  }
+}
+
 
 void TransferFuncs::VisitDeclRefExpr(DeclRefExpr* DR) {
   if (VarDecl* V = dyn_cast<VarDecl>(DR->getDecl())) 
diff --git a/lib/Analysis/UninitializedValues.cpp b/lib/Analysis/UninitializedValues.cpp
index 3edf04d..d5c697a 100644
--- a/lib/Analysis/UninitializedValues.cpp
+++ b/lib/Analysis/UninitializedValues.cpp
@@ -75,6 +75,8 @@
   
   bool Visit(Stmt *S);
   bool BlockStmt_VisitExpr(Expr* E);
+    
+  void VisitTerminator(Stmt* T) { Visit(T); }
   
   BlockVarDecl* FindBlockVarDecl(Stmt* S);
 };
