[clang] [analyzer] Discard non-live source frames from the current stack (PR #213779)

Balázs Benics via cfe-commits cfe-commits at lists.llvm.org
Wed Aug 5 04:52:11 PDT 2026


================
@@ -52,6 +52,11 @@ static bool isDanglingStackSource(const MemRegion *Source,
         })) {
       return false;
     }
+    // Only a source whose frame is still live on the current stack can
+    // dangle. If that frame is not on the stack then the source outlives
+    // the returned value. The source is still alive when the returned value
+    // is used, so it does not dangle.
+    return is_contained(make_pointer_range(C.stackframes()), SF);
----------------
steakhal wrote:

If we unconditionally return here, isn't the rest of the statements at this indentation level dead code?

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


More information about the cfe-commits mailing list