[clang] [LifetimeSafety] Use ImmutableList for buildOriginFlowChain DFS nodes (PR #208890)

Yuan Suo via cfe-commits cfe-commits at lists.llvm.org
Sat Aug 1 02:41:14 PDT 2026


================
@@ -668,10 +668,10 @@ class LifetimeSafetySemaHelperImpl : public LifetimeSafetySemaHelper {
     if (OriginExprChain.empty())
       return;
 
-    const Expr *LastExpr = OriginExprChain.back();
+    const Expr *LastExpr = OriginExprChain.front();
     std::string IssueStr = getDiagSubjectDescription(LastExpr);
 
-    for (const Expr *CurrExpr : reverse(OriginExprChain.drop_back())) {
+    for (const Expr *CurrExpr : OriginExprChain.drop_front()) {
----------------
suoyuan666 wrote:

Looking  at the CI failure log, it seems `llvm::reverse` cannot be used here because `ImmuatbleList` does not provide `rbegin`.

Of cause, we could try first convert it to a `SmallVector`, reverse it, and then reconstruct it, something like:

```cpp
return llvm::SmallVector<OriginID>(llvm::reverse(
            llvm::SmallVector<OriginID>(CurrNode.OriginFlowChain.begin(),
                                        CurrNode.OriginFlowChain.end())));
```

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


More information about the cfe-commits mailing list