aboutsummaryrefslogtreecommitdiffstats
path: root/libsolidity/SolidityOptimizer.cpp
diff options
context:
space:
mode:
authorMarek Kotewicz <marek.kotewicz@gmail.com>2015-04-29 15:11:44 +0800
committerMarek Kotewicz <marek.kotewicz@gmail.com>2015-04-29 15:11:44 +0800
commit3053c644ba9345f45391f65f3afc49f1b5afe259 (patch)
treee8da7ebe4cb4b2b8d4d6cecae1049202936e376d /libsolidity/SolidityOptimizer.cpp
parentb79f8a0b57acc7b9c7ca04eac87b6104c9dba557 (diff)
parent717f2559696380c51d39cbf0105785c85ce3f3cf (diff)
downloaddexon-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.cpp16
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)