From 944f1bc3928a7093659c0fd2b2fc24eb836e65af Mon Sep 17 00:00:00 2001 From: Anders Schack-Mulligen Date: Wed, 4 Nov 2026 14:57:14 +0100 Subject: [PATCH] C/C++: Skip redundant iterator use-use edges. --- .../semmle/code/cpp/ir/dataflow/internal/DataFlowPrivate.qll | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/cpp/ql/lib/semmle/code/cpp/ir/dataflow/internal/DataFlowPrivate.qll b/cpp/ql/lib/semmle/code/cpp/ir/dataflow/internal/DataFlowPrivate.qll index 29f1a16bf58e..492e2ca1c022 100644 --- a/cpp/ql/lib/semmle/code/cpp/ir/dataflow/internal/DataFlowPrivate.qll +++ b/cpp/ql/lib/semmle/code/cpp/ir/dataflow/internal/DataFlowPrivate.qll @@ -2292,7 +2292,10 @@ module IteratorFlow { predicate localFlowStep(Node nodeFrom, Node nodeTo) { exists(SourceVariable v | nodeFrom != nodeTo and - DataFlowIntegrationImpl::localFlowStep(v, fromDfNode(nodeFrom, v), fromDfNode(nodeTo, v), _) + // Skip use-use steps. These are already accounted for by regular SSA + // flow including proper handling of `modeledFlowBarrier`. + DataFlowIntegrationImpl::localFlowStep(v, fromDfNode(nodeFrom, v), fromDfNode(nodeTo, v), + false) ) } }