[clang] [LifetimeSafety] Detect iterator invalidation through container aliases (PR #195231)

Utkarsh Saxena via cfe-commits cfe-commits at lists.llvm.org
Fri May 1 04:47:03 PDT 2026


================
@@ -345,37 +384,41 @@ void Invalidate1Use2IsOk() {
     auto it = s.strings1.begin();
     s.strings2.push_back("1");
     *it;
-}void Invalidate1Use2ViaRefIsOk() {
+}
+
+// FIXME: Requires field-sensitive AccessPaths to fix.
+void Invalidate1Use2ViaRefIsOk() {
     S s;
-    auto it = s.strings2.begin();
+    auto it = s.strings2.begin(); // expected-warning {{object whose reference is captured is later invalidated}}
     auto& strings2 = s.strings2;
----------------
usx95 wrote:

The correct version is not a false-positive.

```cpp
auto it = s.strings2.begin();
auto& strings1 = s.strings1;
strings1.push_back("1"); 
*it;
```

This should have a FIXME if it fires.

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


More information about the cfe-commits mailing list