Move -dump-live-variables logic to AnalysisConsumer.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@53039 91177308-0d34-0410-b5e6-96231b3b80d8
diff --git a/Driver/AnalysisConsumer.cpp b/Driver/AnalysisConsumer.cpp
index 2f2e76e..ecb4ad2 100644
--- a/Driver/AnalysisConsumer.cpp
+++ b/Driver/AnalysisConsumer.cpp
@@ -131,6 +131,10 @@
       return *C.Ctx;
     }
     
+    SourceManager& getSourceManager() {
+      return getContext().getSourceManager();
+    }
+    
     Diagnostic& getDiagnostic() {
       return C.Diags;
     }
@@ -147,7 +151,10 @@
     }
       
     LiveVariables* getLiveVariables() {
-      if (!liveness) liveness.reset(new LiveVariables(*getCFG()));
+      if (!liveness) {
+        liveness.reset(new LiveVariables(*getCFG()));
+        liveness->runOnCFG(*getCFG());
+      }
       return liveness.get();
     }
     
@@ -200,6 +207,10 @@
   switch (D->getKind()) {
     case Decl::Function: {
       FunctionDecl* FD = cast<FunctionDecl>(D);
+
+      if (FName.size() > 0 && FName != FD->getIdentifier()->getName())
+        break;
+      
       Stmt* Body = FD->getBody();
       if (Body) HandleCode(FD, Body, FunctionActions);
       break;
@@ -207,6 +218,10 @@
       
     case Decl::ObjCMethod: {
       ObjCMethodDecl* MD = cast<ObjCMethodDecl>(D);
+      
+      if (FName.size() > 0 && FName != MD->getSelector().getName())
+        return;
+      
       Stmt* Body = MD->getBody();
       if (Body) HandleCode(MD, Body, ObjCMethodActions);
       break;
@@ -317,6 +332,11 @@
   ActionGRExprEngine(mgr, MakeGRSimpleValsTF());
 }
 
+static void ActionLiveness(AnalysisManager& mgr) {
+  mgr.DisplayFunction();
+  mgr.getLiveVariables()->dumpBlockLiveness(mgr.getSourceManager());
+}
+
 //===----------------------------------------------------------------------===//
 // AnalysisConsumer creation.
 //===----------------------------------------------------------------------===//
@@ -343,6 +363,10 @@
       case WarnUninitVals:
         C->addCodeAction(&ActionUninitVals);
         break;
+      
+      case DisplayLiveVariables:
+        C->addCodeAction(&ActionLiveness);
+        break;
         
       case CheckerCFRef:
         C->addCodeAction(&ActionRefLeakChecker);