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

Yuan Suo via cfe-commits cfe-commits at lists.llvm.org
Tue Jul 14 05:33:37 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:

According to `FoldingSetBase::InsertNode()`, `ImmutableList` performs forward insertion. As a result, `buildOriginFlowChain()` now returns a list starting from `IssueFact` instead of `StartPoint`. Consequently, the expression list obtained by Sema diagnostic no longer starts from `StartPoint`, which requires changing `drop_back()` to `drop_front()`.

https://github.com/llvm/llvm-project/blob/main/llvm/lib/Support/FoldingSet.cpp#L304C1-L331C2

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


More information about the cfe-commits mailing list