The LiveVariables analysis no longer requires a FunctionDecl&; this allows it
to be run on other declarations of blocks of code (e.g., Objective-C methods.)


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@48339 91177308-0d34-0410-b5e6-96231b3b80d8
diff --git a/Analysis/DeadStores.cpp b/Analysis/DeadStores.cpp
index 0c05484..0848336 100644
--- a/Analysis/DeadStores.cpp
+++ b/Analysis/DeadStores.cpp
@@ -76,13 +76,12 @@
 
 namespace clang {
 
-void CheckDeadStores(CFG& cfg, FunctionDecl& FD, ASTContext &Ctx, 
-                     Diagnostic &Diags) {
+void CheckDeadStores(CFG& cfg, ASTContext &Ctx, Diagnostic &Diags) {
   
-  LiveVariables L(cfg, FD);
+  LiveVariables L(cfg);
   L.runOnCFG(cfg);
   DeadStoreObs A(Ctx, Diags);
-  L.runOnAllBlocks(cfg,&A);
+  L.runOnAllBlocks(cfg, &A);
 }
 
 } // end namespace clang
diff --git a/Analysis/LiveVariables.cpp b/Analysis/LiveVariables.cpp
index 52f7f4d..e59a488 100644
--- a/Analysis/LiveVariables.cpp
+++ b/Analysis/LiveVariables.cpp
@@ -43,14 +43,9 @@
 } // end anonymous namespace
 
 
-LiveVariables::LiveVariables(CFG& cfg, FunctionDecl& FD) {
+LiveVariables::LiveVariables(CFG& cfg) {
+  // Register all referenced VarDecls.
   getAnalysisData().setCFG(&cfg);
-
-  for (FunctionDecl::param_iterator I=FD.param_begin(), E=FD.param_end();
-       I !=E; ++I)
-    getAnalysisData().Register(*I);
-  
-  // Now register all the other VarDecls;
   RegisterDecls R(getAnalysisData());
   cfg.VisitBlockStmts(R);
 }
@@ -201,11 +196,13 @@
 //
 
 bool LiveVariables::isLive(const CFGBlock* B, const VarDecl* D) const {
-  return getBlockData(B)(D,getAnalysisData());
+  DeclBitVector_Types::Idx i = getAnalysisData().getIdx(D);
+  return i.isValid() ? getBlockData(B).getBit(i) : false;
 }
 
 bool LiveVariables::isLive(const ValTy& Live, const VarDecl* D) const {
-  return Live(D,getAnalysisData());
+  DeclBitVector_Types::Idx i = getAnalysisData().getIdx(D);
+  return i.isValid() ? Live.getBit(i) : false;
 }
 
 bool LiveVariables::isLive(const Stmt* Loc, const Stmt* StmtVal) const {