diff options
author | chriseth <chris@ethereum.org> | 2018-10-28 19:58:21 +0800 |
---|---|---|
committer | chriseth <chris@ethereum.org> | 2018-11-09 01:14:36 +0800 |
commit | fa44d2072116fa818282a173f011b30d61c89995 (patch) | |
tree | 4dc78dca786b550875584519240690997f6a9955 /libyul/optimiser/UnusedPruner.cpp | |
parent | 20481055e3b439657bd44ea66b05a633477eeaf8 (diff) | |
download | dexon-solidity-fa44d2072116fa818282a173f011b30d61c89995.tar.gz dexon-solidity-fa44d2072116fa818282a173f011b30d61c89995.tar.zst dexon-solidity-fa44d2072116fa818282a173f011b30d61c89995.zip |
Remove side-effect-free statements.
Diffstat (limited to 'libyul/optimiser/UnusedPruner.cpp')
-rw-r--r-- | libyul/optimiser/UnusedPruner.cpp | 10 |
1 files changed, 10 insertions, 0 deletions
diff --git a/libyul/optimiser/UnusedPruner.cpp b/libyul/optimiser/UnusedPruner.cpp index a7b32873..71e86798 100644 --- a/libyul/optimiser/UnusedPruner.cpp +++ b/libyul/optimiser/UnusedPruner.cpp @@ -85,6 +85,16 @@ void UnusedPruner::operator()(Block& _block) }}; } } + else if (statement.type() == typeid(ExpressionStatement)) + { + ExpressionStatement& exprStmt = boost::get<ExpressionStatement>(statement); + if (MovableChecker(exprStmt.expression).movable()) + { + // pop(x) should be movable! + subtractReferences(ReferencesCounter::countReferences(exprStmt.expression)); + statement = Block{std::move(exprStmt.location), {}}; + } + } removeEmptyBlocks(_block); |