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_);