[clang] [LifetimeSafety] Detect use-after-return (PR #165370)

Utkarsh Saxena via cfe-commits cfe-commits at lists.llvm.org
Fri Nov 14 06:20:37 PST 2025


================
@@ -122,6 +122,39 @@ class LifetimeTestHelper {
     return LID;
   }
 
+  std::optional<LoanSet> getLiveLoansAtPoint(ProgramPoint P) const {
+    const auto &LiveOriginsAnalysis = Runner.getAnalysis().getLiveOrigins();
+    const auto &LoanPropagation = Runner.getAnalysis().getLoanPropagation();
+
+    LivenessMap LiveOriginsMap = LiveOriginsAnalysis.getLiveOriginsAt(P);
+
+    LoanSet::Factory F;
+    LoanSet Result = F.getEmptySet();
+
+    for (const auto &[OID, LI] : LiveOriginsMap) {
+      if (LI.Kind != LivenessKind::Dead) {
----------------
usx95 wrote:

Do you see "Dead" returned by `getLiveOriginsAt` ? If not, I would skip this check.

https://github.com/llvm/llvm-project/pull/165370


More information about the cfe-commits mailing list