From df080ab5c31d8c5a63b71436910a43f63491e051 Mon Sep 17 00:00:00 2001 From: PKEuS Date: Sun, 17 Aug 2014 20:32:17 +0200 Subject: [PATCH] Refactorization in valueflow.cpp: Removed redundant loop, rearranged code. --- lib/valueflow.cpp | 20 +++++++------------- 1 file changed, 7 insertions(+), 13 deletions(-) diff --git a/lib/valueflow.cpp b/lib/valueflow.cpp index 94c31fbf1..f0df97834 100644 --- a/lib/valueflow.cpp +++ b/lib/valueflow.cpp @@ -471,25 +471,19 @@ static void valueFlowBeforeCondition(TokenList *tokenlist, ErrorLogger *errorLog // extra logic for unsigned variables 'i>=1' => possible value can also be 0 ValueFlow::Value val(tok, num); val.varId = varid; + if (Token::Match(tok, "<|>")) { + if (num != 0) + continue; + if (!var->typeStartToken()->isUnsigned()) + continue; + } ValueFlow::Value val2; if (num==1U && Token::Match(tok,"<=|>=")) { - bool isunsigned = false; - for (const Token* type = var->typeStartToken(); type && type->varId() == 0U; type = type->next()) - isunsigned |= type->isUnsigned(); - if (isunsigned) { + if (var->typeStartToken()->isUnsigned()) { val2 = ValueFlow::Value(tok,0); val2.varId = varid; } } - if (Token::Match(tok,"<|>")) { - if (num!=0) - continue; - bool isunsigned = false; - for (const Token* type = var->typeStartToken(); type && type->varId() == 0U; type = type->next()) - isunsigned |= type->isUnsigned(); - if (!isunsigned) - continue; - } for (Token *tok2 = tok->previous(); ; tok2 = tok2->previous()) { if (!tok2) { if (settings->debugwarnings) {