[clang] [analyzer] Suppress out of bounds reports after weak loop assumptions (PR #109804)
Balazs Benics via cfe-commits
cfe-commits at lists.llvm.org
Mon Sep 30 01:48:24 PDT 2024
=?utf-8?q?Donát?= Nagy <donat.nagy at ericsson.com>
Message-ID:
In-Reply-To: <llvm.org/llvm/llvm-project/pull/109804 at github.com>
================
@@ -441,10 +441,33 @@ void CoreEngine::HandleCallEnter(const CallEnter &CE, ExplodedNode *Pred) {
void CoreEngine::HandleBranch(const Stmt *Cond, const Stmt *Term,
const CFGBlock * B, ExplodedNode *Pred) {
assert(B->succ_size() == 2);
+
+ const LocationContext *LC = Pred->getLocationContext();
+ BlockCounter Counter = WList->getBlockCounter();
+ unsigned BlockCount =
+ Counter.getNumVisited(LC->getStackFrame(), B->getBlockID());
+ std::optional<unsigned> IterationsFinishedInLoop = std::nullopt;
+ if (isa<ForStmt, WhileStmt, CXXForRangeStmt>(Term)) {
+ // FIXME: This code approximates the number of finished iteration based on
+ // the block count, i.e. the number of evaluations of the terminator block
+ // on the current execution path (which includes the current evaluation, so
+ // is always at least 1). This is probably acceptable for the
+ // checker-specific false positive suppression that currently uses this
+ // value, but it would be better to calcuate an accurate count of
+ // iterations.
----------------
steakhal wrote:
The formatting seems off. Some lines are not really padded up to (or close to) 80 cols.
https://github.com/llvm/llvm-project/pull/109804
More information about the cfe-commits
mailing list