[clang] Reland "[LifetimeSafety] Detect iterator invalidation through container aliases" (PR #197873)

Utkarsh Saxena via cfe-commits cfe-commits at lists.llvm.org
Thu May 21 06:30:55 PDT 2026


================
@@ -407,49 +455,72 @@ void Invalidate1Use1IsInvalid() {
   s.strings1.push_back("1");
   *it;
 }
-void Invalidate1Use2IsOk() {
+void Invalidate2Use1IsOk() {
     S s;
     auto it = s.strings1.begin();
     s.strings2.push_back("1");
     *it;
-}void Invalidate1Use2ViaRefIsOk() {
+}
+// FIXME: Requires field-sensitive AccessPaths to fix.
----------------
usx95 wrote:

Could you please bring back `ConditionalContainerInvalidatesIterator` and `ConditionalFieldInvalidationIsOk` as a FIXME tests.

> ConditionalFieldInvalidationIsOk

```cpp
void ConditionalFieldInvalidationIsOk(bool flag) {
    S s;
    auto it = s.strings1.begin();
    (flag ? s.strings1 : s.strings2).push_back("1");
    *it;
}
​```

Btw, this is should be an error because `s.strings1` can end invalidating `it`.

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


More information about the cfe-commits mailing list