Tokenizer: Removed simplifyComparisonOrder
This commit is contained in:
parent
0b4de97e2b
commit
4eb746d7cc
|
@ -999,12 +999,16 @@ Token *CheckMemoryLeakInFunction::getcode(const Token *tok, std::list<const Toke
|
|||
if (Token::simpleMatch(tok, "if (")) {
|
||||
if (alloctype == Fd) {
|
||||
if (Token::Match(tok, "if ( 0|-1 <=|< %varid% )", varid) ||
|
||||
Token::Match(tok, "if ( %varid% != -1 )", varid)) {
|
||||
Token::Match(tok, "if ( %varid% >|>= 0|-1 )", varid) ||
|
||||
Token::Match(tok, "if ( %varid% != -1 )", varid) ||
|
||||
Token::Match(tok, "if ( -1 != %varid% )", varid)) {
|
||||
addtoken(&rettail, tok, "if(var)");
|
||||
tok = tok->next()->link();
|
||||
continue;
|
||||
} else if (Token::Match(tok, "if ( %varid% == -1 )", varid) ||
|
||||
Token::Match(tok, "if ( %varid% < 0 )", varid)) {
|
||||
Token::Match(tok, "if ( -1 == %varid% )", varid) ||
|
||||
Token::Match(tok, "if ( %varid% < 0 )", varid) ||
|
||||
Token::Match(tok, "if ( 0 > %varid% )", varid)) {
|
||||
addtoken(&rettail, tok, "if(!var)");
|
||||
tok = tok->next()->link();
|
||||
continue;
|
||||
|
@ -1122,12 +1126,16 @@ Token *CheckMemoryLeakInFunction::getcode(const Token *tok, std::list<const Toke
|
|||
|
||||
else if (alloctype == Fd && varid) {
|
||||
if (Token::Match(tok, "while ( 0 <= %varid% )", varid) ||
|
||||
Token::Match(tok, "while ( %varid% != -1 )", varid)) {
|
||||
Token::Match(tok, "while ( %varid% >= 0 )", varid) ||
|
||||
Token::Match(tok, "while ( %varid% != -1 )", varid) ||
|
||||
Token::Match(tok, "while ( -1 != %varid% )", varid)) {
|
||||
addtoken(&rettail, tok, "while(var)");
|
||||
tok = end;
|
||||
continue;
|
||||
} else if (Token::Match(tok, "while ( %varid% == -1 )", varid) ||
|
||||
Token::Match(tok, "while ( %varid% < 0 )", varid)) {
|
||||
Token::Match(tok, "while ( -1 == %varid% )", varid) ||
|
||||
Token::Match(tok, "while ( %varid% < 0 )", varid) ||
|
||||
Token::Match(tok, "while ( 0 > %varid% )", varid)) {
|
||||
addtoken(&rettail, tok, "while(!var)");
|
||||
tok = end;
|
||||
continue;
|
||||
|
|
|
@ -3302,9 +3302,6 @@ bool Tokenizer::simplifyTokenList1()
|
|||
// simplify bit fields..
|
||||
simplifyBitfields();
|
||||
|
||||
// Use "<" comparison instead of ">"
|
||||
simplifyComparisonOrder();
|
||||
|
||||
// Simplify '(p == 0)' to '(!p)'
|
||||
simplifyIfNot();
|
||||
simplifyIfNotNull();
|
||||
|
@ -3649,7 +3646,6 @@ bool Tokenizer::simplifyTokenList2()
|
|||
simplifyIfNot();
|
||||
simplifyIfNotNull();
|
||||
simplifyIfSameInnerCondition();
|
||||
simplifyComparisonOrder();
|
||||
simplifyNestedStrcat();
|
||||
simplifyWhile0();
|
||||
simplifyFuncInWhile();
|
||||
|
@ -9063,33 +9059,6 @@ void Tokenizer::simplifyStructInit()
|
|||
}
|
||||
|
||||
|
||||
void Tokenizer::simplifyComparisonOrder()
|
||||
{
|
||||
// Use "<" comparison instead of ">"
|
||||
for (Token *tok = list.front(); tok; tok = tok->next()) {
|
||||
if (Token::Match(tok, "[;(] %var%|%num% >|>= %num%|%var% [);]")) {
|
||||
const Token *operand2 = tok->tokAt(3);
|
||||
const std::string op1(tok->next()->str());
|
||||
unsigned int var1 = tok->next()->varId();
|
||||
tok->next()->str(operand2->str());
|
||||
tok->next()->varId(operand2->varId());
|
||||
tok->tokAt(3)->str(op1);
|
||||
tok->tokAt(3)->varId(var1);
|
||||
if (tok->strAt(2) == ">")
|
||||
tok->tokAt(2)->str("<");
|
||||
else
|
||||
tok->tokAt(2)->str("<=");
|
||||
} else if (Token::Match(tok, "( %num% ==|!= %var% )")) {
|
||||
const std::string op1(tok->next()->str());
|
||||
unsigned int var1 = tok->next()->varId();
|
||||
tok->next()->str(tok->strAt(3));
|
||||
tok->next()->varId(tok->tokAt(3)->varId());
|
||||
tok->tokAt(3)->str(op1);
|
||||
tok->tokAt(3)->varId(var1);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void Tokenizer::simplifyConst()
|
||||
{
|
||||
for (Token *tok = list.front(); tok; tok = tok->next()) {
|
||||
|
|
|
@ -514,12 +514,6 @@ public:
|
|||
*/
|
||||
static std::string simplifyString(const std::string &source);
|
||||
|
||||
/**
|
||||
* Use "<" comparison instead of ">"
|
||||
* Use "<=" comparison instead of ">="
|
||||
*/
|
||||
void simplifyComparisonOrder();
|
||||
|
||||
/**
|
||||
* Change "int const x;" into "const int x;"
|
||||
*/
|
||||
|
|
|
@ -210,6 +210,7 @@ private:
|
|||
settings->inconclusive = inconclusive;
|
||||
settings->experimental = experimental;
|
||||
settings->standards.posix = posix;
|
||||
settings->valueFlow = true;
|
||||
|
||||
if (posix) {
|
||||
const char cfg[] = "<?xml version=\"1.0\"?>\n"
|
||||
|
|
|
@ -848,7 +848,7 @@ private:
|
|||
ASSERT_EQUALS("= p ;", tok("= (p);"));
|
||||
ASSERT_EQUALS("if ( a < p ) { }", tok("if(a<(p)){}"));
|
||||
ASSERT_EQUALS("void f ( ) { int p ; if ( p == -1 ) { } }", tok("void f(){int p; if((p)==-1){}}"));
|
||||
ASSERT_EQUALS("void f ( ) { int p ; if ( p == -1 ) { } }", tok("void f(){int p; if(-1==(p)){}}"));
|
||||
ASSERT_EQUALS("void f ( ) { int p ; if ( -1 == p ) { } }", tok("void f(){int p; if(-1==(p)){}}"));
|
||||
ASSERT_EQUALS("void f ( ) { int p ; if ( p ) { } }", tok("void f(){int p; if((p)){}}"));
|
||||
ASSERT_EQUALS("return p ;", tok("return (p);"));
|
||||
ASSERT_EQUALS("void f ( ) { int * p ; if ( ! * p ) { } }", tok("void f(){int *p; if (*(p) == 0) {}}"));
|
||||
|
@ -865,7 +865,7 @@ private:
|
|||
ASSERT_EQUALS("return ( a + b ) * c ;", tok("return (a+b)*c;"));
|
||||
ASSERT_EQUALS("void f ( ) { int p ; if ( 2 * p == 0 ) { } }", tok("void f(){int p; if (2*p == 0) {}}"));
|
||||
ASSERT_EQUALS("void f ( ) { DIR * f ; f = opendir ( dirname ) ; if ( closedir ( f ) ) { } }", tok("void f(){DIR * f = opendir(dirname);if (closedir(f)){}}"));
|
||||
ASSERT_EQUALS("void foo ( int p ) { if ( 0 <= p ) { ; } }", tok("void foo(int p){if((p)>=0);}"));
|
||||
ASSERT_EQUALS("void foo ( int p ) { if ( p >= 0 ) { ; } }", tok("void foo(int p){if((p)>=0);}"));
|
||||
}
|
||||
|
||||
void declareVar() {
|
||||
|
@ -897,7 +897,7 @@ private:
|
|||
" a = 10;\n"
|
||||
" a++;\n"
|
||||
"}\n";
|
||||
ASSERT_EQUALS("void f ( int a ) { if ( 10 < a ) { a = 5 ; } else { a = 10 ; } a ++ ; }", tok(code));
|
||||
ASSERT_EQUALS("void f ( int a ) { if ( a > 10 ) { a = 5 ; } else { a = 10 ; } a ++ ; }", tok(code));
|
||||
}
|
||||
|
||||
{
|
||||
|
@ -909,7 +909,7 @@ private:
|
|||
" a = 10;\n"
|
||||
" ++a;\n"
|
||||
"}\n";
|
||||
ASSERT_EQUALS("void f ( int a ) { if ( 10 < a ) { a = 5 ; } else { a = 10 ; } ++ a ; }", tok(code));
|
||||
ASSERT_EQUALS("void f ( int a ) { if ( a > 10 ) { a = 5 ; } else { a = 10 ; } ++ a ; }", tok(code));
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -2622,7 +2622,7 @@ private:
|
|||
ASSERT_EQUALS("; a = b ( ) ; if ( ! ( a ) ) { ; }", simplifyIfAndWhileAssign(";if(!(a=b()));"));
|
||||
ASSERT_EQUALS("; a . x = b ( ) ; if ( ! ( a . x ) ) { ; }", simplifyIfAndWhileAssign(";if(!(a->x=b()));"));
|
||||
ASSERT_EQUALS("void f ( ) { A ( ) a = b ; if ( a ) { ; } }", simplifyIfAndWhileAssign("void f() { A() if(a=b); }"));
|
||||
ASSERT_EQUALS("void foo ( int a ) { a = b ( ) ; if ( 0 <= a ) { ; } }", tok("void foo(int a) {if((a=b())>=0);}"));
|
||||
ASSERT_EQUALS("void foo ( int a ) { a = b ( ) ; if ( a >= 0 ) { ; } }", tok("void foo(int a) {if((a=b())>=0);}"));
|
||||
TODO_ASSERT_EQUALS("void foo ( A a ) { a . c = b ( ) ; if ( 0 <= a . c ) { ; } }",
|
||||
"void foo ( A a ) { a . c = b ( ) ; if ( a . c >= 0 ) { ; } }",
|
||||
tok("void foo(A a) {if((a.c=b())>=0);}"));
|
||||
|
@ -3610,7 +3610,7 @@ private:
|
|||
" bar(); "
|
||||
" } "
|
||||
"}";
|
||||
ASSERT_EQUALS("void f ( ) { if ( 0 < k ) { goto label ; } " + *it + " ; { label : ; bar ( ) ; } }",tok(code));
|
||||
ASSERT_EQUALS("void f ( ) { if ( k > 0 ) { goto label ; } " + *it + " ; { label : ; bar ( ) ; } }",tok(code));
|
||||
}
|
||||
|
||||
{
|
||||
|
|
|
@ -420,8 +420,6 @@ private:
|
|||
TEST_CASE(removeExceptionSpecification5);
|
||||
TEST_CASE(removeExceptionSpecification6); // #4617
|
||||
|
||||
TEST_CASE(gt); // use "<" comparisons instead of ">"
|
||||
|
||||
TEST_CASE(simplifyString);
|
||||
TEST_CASE(simplifyConst);
|
||||
TEST_CASE(switchCase);
|
||||
|
@ -1857,7 +1855,7 @@ private:
|
|||
void simplifyKnownVariables19() {
|
||||
const char code[] = "void f ( ) { int i=0; do { if (i>0) { a(); } i=b(); } while (i != 12); }";
|
||||
ASSERT_EQUALS(
|
||||
"void f ( ) { int i ; i = 0 ; do { if ( 0 < i ) { a ( ) ; } i = b ( ) ; } while ( i != 12 ) ; }",
|
||||
"void f ( ) { int i ; i = 0 ; do { if ( i > 0 ) { a ( ) ; } i = b ( ) ; } while ( i != 12 ) ; }",
|
||||
simplifyKnownVariables(code));
|
||||
}
|
||||
|
||||
|
@ -2109,7 +2107,7 @@ private:
|
|||
"{"
|
||||
" int i ; i = 2 ;"
|
||||
" if ( g ) { }"
|
||||
" if ( 0 < 2 ) { } "
|
||||
" if ( 2 > 0 ) { } "
|
||||
"}",
|
||||
simplifyKnownVariables(code));
|
||||
}
|
||||
|
@ -2488,7 +2486,7 @@ private:
|
|||
"}\n";
|
||||
const char expected[] = "void f ( ) {\n"
|
||||
"int x ; x = 10 ;\n"
|
||||
"do { cin >> x ; } while ( 5 < x ) ;\n"
|
||||
"do { cin >> x ; } while ( x > 5 ) ;\n"
|
||||
"a [ x ] = 0 ;\n"
|
||||
"}";
|
||||
ASSERT_EQUALS(expected, tokenizeAndStringify(code, true));
|
||||
|
@ -2747,7 +2745,7 @@ private:
|
|||
"}";
|
||||
const char expected[] = "void f ( int sz ) {\n"
|
||||
"int i ;\n"
|
||||
"for ( i = 0 ; ( i < sz ) && ( 3 < sz ) ; ++ i ) { }\n"
|
||||
"for ( i = 0 ; ( i < sz ) && ( sz > 3 ) ; ++ i ) { }\n"
|
||||
"}";
|
||||
ASSERT_EQUALS(expected, tokenizeAndStringify(code, true, true, Settings::Unspecified, "test.c"));
|
||||
}
|
||||
|
@ -6812,13 +6810,6 @@ private:
|
|||
tokenizeAndStringify("void foo () noexcept(noexcept(true)) const { }"));
|
||||
}
|
||||
|
||||
void gt() {
|
||||
ASSERT_EQUALS("( i < 10 )", tokenizeAndStringify("(10>i)"));
|
||||
ASSERT_EQUALS("; i < 10 ;", tokenizeAndStringify(";10>i;"));
|
||||
ASSERT_EQUALS("void > ( ) ; void > ( )",
|
||||
tokenizeAndStringify("void>(); void>()"));
|
||||
}
|
||||
|
||||
|
||||
void simplifyString() {
|
||||
errout.str("");
|
||||
|
|
Loading…
Reference in New Issue