Replace `transfer(const Stmt *, ...)` with `transfer(const CFGElement *, ...)` in `crubit/lifetime_analysis`.

PiperOrigin-RevId: 475664056
diff --git a/lifetime_analysis/lifetime_analysis.cc b/lifetime_analysis/lifetime_analysis.cc
index 68192b4..2e7d4e5 100644
--- a/lifetime_analysis/lifetime_analysis.cc
+++ b/lifetime_analysis/lifetime_analysis.cc
@@ -32,6 +32,7 @@
 #include "clang/AST/StmtVisitor.h"
 #include "clang/AST/TemplateBase.h"
 #include "clang/AST/Type.h"
+#include "clang/Analysis/CFG.h"
 #include "clang/Analysis/FlowSensitive/DataflowAnalysis.h"
 #include "llvm/ADT/ArrayRef.h"
 #include "llvm/ADT/DenseMap.h"
@@ -612,10 +613,15 @@
   return state1 == state2;
 }
 
-void LifetimeAnalysis::transfer(const clang::Stmt* stmt, LifetimeLattice& state,
+void LifetimeAnalysis::transfer(const clang::CFGElement* elt,
+                                LifetimeLattice& state,
                                 clang::dataflow::Environment& /*environment*/) {
   if (state.IsError()) return;
 
+  auto cfg_stmt = elt->getAs<clang::CFGStmt>();
+  if (!cfg_stmt) return;
+  auto stmt = cfg_stmt->getStmt();
+
   TransferStmtVisitor visitor(object_repository_, state.PointsTo(),
                               state.Constraints(), func_, callee_lifetimes_,
                               diag_reporter_);
diff --git a/lifetime_analysis/lifetime_analysis.h b/lifetime_analysis/lifetime_analysis.h
index b0a0cb2..4ba562c 100644
--- a/lifetime_analysis/lifetime_analysis.h
+++ b/lifetime_analysis/lifetime_analysis.h
@@ -18,6 +18,7 @@
 #include "clang/AST/Expr.h"
 #include "clang/AST/ExprCXX.h"
 #include "clang/AST/Type.h"
+#include "clang/Analysis/CFG.h"
 #include "llvm/Support/Error.h"
 #include "llvm/Support/raw_ostream.h"
 
@@ -70,7 +71,7 @@
 
   bool IsEqual(const LifetimeLattice& state1, const LifetimeLattice& state2);
 
-  void transfer(const clang::Stmt* stmt, LifetimeLattice& state,
+  void transfer(const clang::CFGElement* elt, LifetimeLattice& state,
                 clang::dataflow::Environment& environment);
 
  private: