aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorGav Wood <g@ethdev.com>2015-06-07 13:12:29 +0800
committerGav Wood <g@ethdev.com>2015-06-07 13:12:29 +0800
commit523fd10c54953144bf091c2320d99efb095c762d (patch)
treeac4e5f736e8cf0bbceec20fe48307508060e47a7
parent6bd934868044e38d2e53bc587f285a46b1236790 (diff)
parenta20b23a7a835a31a5a35974000e5ddcc7cbfdbff (diff)
downloaddexon-solidity-523fd10c54953144bf091c2320d99efb095c762d.tar.gz
dexon-solidity-523fd10c54953144bf091c2320d99efb095c762d.tar.zst
dexon-solidity-523fd10c54953144bf091c2320d99efb095c762d.zip
Merge pull request #2102 from chriseth/sol_iszeroiszero
Optimize double ISZERO.
-rw-r--r--libsolidity/SolidityOptimizer.cpp10
1 files changed, 10 insertions, 0 deletions
diff --git a/libsolidity/SolidityOptimizer.cpp b/libsolidity/SolidityOptimizer.cpp
index 4ed081fd..de704c0d 100644
--- a/libsolidity/SolidityOptimizer.cpp
+++ b/libsolidity/SolidityOptimizer.cpp
@@ -440,6 +440,16 @@ BOOST_AUTO_TEST_CASE(cse_double_negation)
checkCSE({Instruction::DUP5, Instruction::NOT, Instruction::NOT}, {Instruction::DUP5});
}
+BOOST_AUTO_TEST_CASE(cse_double_iszero)
+{
+ checkCSE({Instruction::GT, Instruction::ISZERO, Instruction::ISZERO}, {Instruction::GT});
+ checkCSE({Instruction::GT, Instruction::ISZERO}, {Instruction::GT, Instruction::ISZERO});
+ checkCSE(
+ {Instruction::ISZERO, Instruction::ISZERO, Instruction::ISZERO},
+ {Instruction::ISZERO}
+ );
+}
+
BOOST_AUTO_TEST_CASE(cse_associativity)
{
AssemblyItems input{