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