diff --git a/lib/valueflow.cpp b/lib/valueflow.cpp index 58b2047bf..8cfeda710 100644 --- a/lib/valueflow.cpp +++ b/lib/valueflow.cpp @@ -697,7 +697,7 @@ static void valueFlowBeforeCondition(TokenList *tokenlist, SymbolDatabase *symbo const Token *vartok = Token::findmatch(tok2->link(), "%varid%", tok2, varid); while (Token::Match(vartok, "%name% = %num% ;") && !vartok->tokAt(2)->getValue(num)) vartok = Token::findmatch(vartok->next(), "%varid%", tok2, varid); - if (isVariableChanged(tok2->link(), tok2, varid) && vartok) { + if (vartok) { if (settings->debugwarnings) { std::string errmsg = "variable "; if (var) diff --git a/test/testvalueflow.cpp b/test/testvalueflow.cpp index 0d81696f1..b70580dc1 100644 --- a/test/testvalueflow.cpp +++ b/test/testvalueflow.cpp @@ -522,21 +522,18 @@ private: ASSERT_EQUALS(false, testValueOfX(code, 4U, 0)); ASSERT_EQUALS(false, testValueOfX(code, 5U, 0)); + bailout("void f(int x) {\n" + " if (x != 123) { b = x; }\n" + " if (x == 123) {}\n" + "}"); + ASSERT_EQUALS("[test.cpp:2]: (debug) ValueFlow bailout: variable x stopping on }\n", errout.str()); + code = "void f(int x) {\n" " a = x;\n" " if (abc) { x = 1; }\n" // <- condition must be false if x is 7 in next line " if (x == 7) { }\n" "}"; ASSERT_EQUALS(true, testValueOfX(code, 2U, 7)); - - code = "void dostuff(const int *x);\n" // #6710 - "void f(const int *x) {\n" - " for (int i = *x; i > 0; --i) {\n" - " dostuff(x);\n" - " }\n" - " if (x) {}\n" - "}"; - ASSERT_EQUALS(true, testValueOfX(code, 3U, 0)); } void valueFlowBeforeConditionGlobalVariables() {