From 46a01724800e40c2b237d2114ffb39dbcd1ff00a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Daniel=20Marjam=C3=A4ki?= Date: Sun, 16 Dec 2018 16:43:04 +0100 Subject: [PATCH] FwdAnalysis: fix FP in loop --- lib/astutils.cpp | 16 ++++------------ test/testunusedvar.cpp | 8 ++++++++ 2 files changed, 12 insertions(+), 12 deletions(-) diff --git a/lib/astutils.cpp b/lib/astutils.cpp index 6aa3c96de..9128beec4 100644 --- a/lib/astutils.cpp +++ b/lib/astutils.cpp @@ -1104,20 +1104,12 @@ struct FwdAnalysis::Result FwdAnalysis::checkRecursive(const Token *expr, const conditionEnd = conditionStart->link(); } if (conditionStart && conditionEnd) { - bool write = false; + bool used = false; for (const Token *condTok = conditionStart; condTok != conditionEnd; condTok = condTok->next()) { - if (Token::Match(condTok, "=|++|--")) { - visitAstNodes(condTok->astOperand1(), - [&](const Token *writeTok) { - if (exprVarIds.find(writeTok->varId()) != exprVarIds.end()) - write = true; - return write ? ChildrenToVisit::done : ChildrenToVisit::op1_and_op2; - }); - if (write) - break; - } + if (exprVarIds.find(condTok->varId()) != exprVarIds.end()) + used = true; } - if (write) + if (used) return Result(Result::Type::BAILOUT); } diff --git a/test/testunusedvar.cpp b/test/testunusedvar.cpp index 4c099e5aa..415e403b7 100644 --- a/test/testunusedvar.cpp +++ b/test/testunusedvar.cpp @@ -2153,6 +2153,14 @@ private: " while (x < 10) { x = x + 1; }\n" "}\n"); ASSERT_EQUALS("", errout.str()); + + functionVariableUsage("void fun()\n" + "{\n" + " int status = 0;\n" + " for (ind = 0; ((ind < nrArgs) && (status < 10)); ind++)\n" + " status = x;\n" + "}"); + ASSERT_EQUALS("", errout.str()); } void localvaralias1() {