https://github.com/paulsemel created https://github.com/llvm/llvm-project/pull/80989
This is needed in order to correctly assume implicit iterator validity in the iterator checker. >From b227aa82732cdc087ead5df62077055042d22696 Mon Sep 17 00:00:00 2001 From: Paul Semel <semelp...@gmail.com> Date: Wed, 7 Feb 2024 13:06:40 +0000 Subject: [PATCH] [dataflow] CXXForRangeStmt should extend flow condition This is needed in order to correctly assume implicit iterator validity in the iterator checker. --- .../FlowSensitive/TypeErasedDataflowAnalysis.cpp | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/clang/lib/Analysis/FlowSensitive/TypeErasedDataflowAnalysis.cpp b/clang/lib/Analysis/FlowSensitive/TypeErasedDataflowAnalysis.cpp index 4c88c46142d64d..f02c65094113ec 100644 --- a/clang/lib/Analysis/FlowSensitive/TypeErasedDataflowAnalysis.cpp +++ b/clang/lib/Analysis/FlowSensitive/TypeErasedDataflowAnalysis.cpp @@ -103,9 +103,12 @@ class TerminatorVisitor return {nullptr, false}; } - TerminatorVisitorRetTy VisitCXXForRangeStmt(const CXXForRangeStmt *) { - // Don't do anything special for CXXForRangeStmt, because the condition - // (being implicitly generated) isn't visible from the loop body. + TerminatorVisitorRetTy VisitCXXForRangeStmt(const CXXForRangeStmt *S) { + // Even though the condition isn't visible from the loop body, analysis + // might depend on the implicit implicit statements implied by the loop. + auto *Cond = S->getCond(); + if (Cond != nullptr) + return extendFlowCondition(*Cond); return {nullptr, false}; } _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits