Skip to content

Commit b792efb

Browse files
committed
Fix ticket 3140 and 3137 (Improve Tokenizer: Remove dead for loop - simplify while(0) better.
Note: it doesn't remove dead code if there's a label inside. Will be improved in another ticket.
1 parent 16506f0 commit b792efb

2 files changed

Lines changed: 3 additions & 1 deletion

File tree

lib/tokenize.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10036,7 +10036,7 @@ void Tokenizer::simplifyWhile0()
1003610036
if (Token::simpleMatch(tok->next()->link(), ") {"))
1003710037
{
1003810038
const Token *end = tok->next()->link()->next()->link();
10039-
if (!findmatch(tok, end, "continue|break"))
10039+
if (!findmatch(tok, end, "%var% : ;"))
1004010040
{
1004110041
Token::eraseTokens(tok, end ? end->next() : 0);
1004210042
tok->deleteThis(); // delete "while"

test/testsimplifytokens.cpp

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6432,6 +6432,8 @@ class TestSimplifyTokens : public TestFixture
64326432
// for (condition is always false)
64336433
ASSERT_EQUALS("void f ( ) { ; }", tok("void f() { int i; for (i = 0; i < 0; i++) { a; } }"));
64346434
//ticket #3140
6435+
ASSERT_EQUALS("void f ( ) { ; }", tok("void f() { int i; for (i = 0; i < 0; i++) { foo(); break; } }"));
6436+
ASSERT_EQUALS("void f ( ) { ; }", tok("void f() { int i; for (i = 0; i < 0; i++) { foo(); continue; } }"));
64356437
ASSERT_EQUALS("void f ( ) { }", tok("void f() { for (int i = 0; i < 0; i++) { a; } }"));
64366438
ASSERT_EQUALS("void f ( ) { }", tok("void f() { for (unsigned int i = 0; i < 0; i++) { a; } }"));
64376439
ASSERT_EQUALS("void f ( ) { }", tok("void f() { for (long long i = 0; i < 0; i++) { a; } }"));

0 commit comments

Comments
 (0)