diff options
author | Marek Kotewicz <marek.kotewicz@gmail.com> | 2015-04-29 15:11:44 +0800 |
---|---|---|
committer | Marek Kotewicz <marek.kotewicz@gmail.com> | 2015-04-29 15:11:44 +0800 |
commit | 3053c644ba9345f45391f65f3afc49f1b5afe259 (patch) | |
tree | e8da7ebe4cb4b2b8d4d6cecae1049202936e376d /libsolidity/SolidityOptimizer.cpp | |
parent | b79f8a0b57acc7b9c7ca04eac87b6104c9dba557 (diff) | |
parent | 717f2559696380c51d39cbf0105785c85ce3f3cf (diff) | |
download | dexon-solidity-3053c644ba9345f45391f65f3afc49f1b5afe259.tar dexon-solidity-3053c644ba9345f45391f65f3afc49f1b5afe259.tar.gz dexon-solidity-3053c644ba9345f45391f65f3afc49f1b5afe259.tar.bz2 dexon-solidity-3053c644ba9345f45391f65f3afc49f1b5afe259.tar.lz dexon-solidity-3053c644ba9345f45391f65f3afc49f1b5afe259.tar.xz dexon-solidity-3053c644ba9345f45391f65f3afc49f1b5afe259.tar.zst dexon-solidity-3053c644ba9345f45391f65f3afc49f1b5afe259.zip |
Merge branch 'develop' into v8console
Diffstat (limited to 'libsolidity/SolidityOptimizer.cpp')
-rw-r--r-- | libsolidity/SolidityOptimizer.cpp | 16 |
1 files changed, 14 insertions, 2 deletions
diff --git a/libsolidity/SolidityOptimizer.cpp b/libsolidity/SolidityOptimizer.cpp index af9b5146..ceb9c68d 100644 --- a/libsolidity/SolidityOptimizer.cpp +++ b/libsolidity/SolidityOptimizer.cpp @@ -22,6 +22,7 @@ #include <string> #include <tuple> +#include <memory> #include <boost/test/unit_test.hpp> #include <boost/lexical_cast.hpp> #include <test/libsolidity/solidityExecutionFramework.h> @@ -84,9 +85,20 @@ public: AssemblyItems getCSE(AssemblyItems const& _input) { + // add dummy locations to each item so that we can check that they are not deleted + AssemblyItems input = _input; + for (AssemblyItem& item: input) + item.setLocation(SourceLocation(1, 3, make_shared<string>(""))); + eth::CommonSubexpressionEliminator cse; - BOOST_REQUIRE(cse.feedItems(_input.begin(), _input.end()) == _input.end()); - return cse.getOptimizedItems(); + BOOST_REQUIRE(cse.feedItems(input.begin(), input.end()) == input.end()); + AssemblyItems output = cse.getOptimizedItems(); + + for (AssemblyItem const& item: output) + { + BOOST_CHECK(item == Instruction::POP || !item.getLocation().isEmpty()); + } + return output; } void checkCSE(AssemblyItems const& _input, AssemblyItems const& _expectation) |