Fixed #6877 (ValueFlow: valueFlowForward, after goto label the value is not known)
This commit is contained in:
parent
ae124cb365
commit
190550f9f9
|
@ -993,6 +993,13 @@ static bool valueFlowForward(Token * const startToken,
|
|||
}
|
||||
}
|
||||
|
||||
if (Token::Match(tok2, "[;{}] %name% :")) {
|
||||
for (std::list<ValueFlow::Value>::iterator it = values.begin(); it != values.end(); ++it)
|
||||
it->changeKnownToPossible();
|
||||
tok2 = tok2->tokAt(2);
|
||||
continue;
|
||||
}
|
||||
|
||||
if (Token::Match(tok2, "sizeof|typeof|typeid ("))
|
||||
tok2 = tok2->linkAt(1);
|
||||
|
||||
|
|
|
@ -1651,6 +1651,15 @@ private:
|
|||
ASSERT_EQUALS(1, value.intvalue);
|
||||
ASSERT(value.isPossible());
|
||||
|
||||
code = "void f() {\n"
|
||||
" int x = 0;\n"
|
||||
"a:\n"
|
||||
" a = x + 1;\n" // <- possible value
|
||||
"}";
|
||||
value = valueOfTok(code, "+");
|
||||
ASSERT_EQUALS(1, value.intvalue);
|
||||
ASSERT(value.isPossible());
|
||||
|
||||
// after condition
|
||||
code = "int f(int x) {\n"
|
||||
" if (x == 4) {}\n"
|
||||
|
|
Loading…
Reference in New Issue