aboutsummaryrefslogtreecommitdiffstats
path: root/libsolidity/interface/AssemblyStack.cpp
diff options
context:
space:
mode:
authorchriseth <chris@ethereum.org>2018-11-03 23:05:08 +0800
committerchriseth <chris@ethereum.org>2018-12-01 06:39:05 +0800
commit6c44c5f0c93d6ce623bec773cc151a73d4b12bff (patch)
tree5a5d79f49211e87737b9c3b74bf40cb1c43e877c /libsolidity/interface/AssemblyStack.cpp
parentcc00d8172b6cd7f9fc032e4a21857455ace2f290 (diff)
downloaddexon-solidity-6c44c5f0c93d6ce623bec773cc151a73d4b12bff.tar
dexon-solidity-6c44c5f0c93d6ce623bec773cc151a73d4b12bff.tar.gz
dexon-solidity-6c44c5f0c93d6ce623bec773cc151a73d4b12bff.tar.bz2
dexon-solidity-6c44c5f0c93d6ce623bec773cc151a73d4b12bff.tar.lz
dexon-solidity-6c44c5f0c93d6ce623bec773cc151a73d4b12bff.tar.xz
dexon-solidity-6c44c5f0c93d6ce623bec773cc151a73d4b12bff.tar.zst
dexon-solidity-6c44c5f0c93d6ce623bec773cc151a73d4b12bff.zip
Apply the optimize commandline parameter to assembly mode.
Diffstat (limited to 'libsolidity/interface/AssemblyStack.cpp')
-rw-r--r--libsolidity/interface/AssemblyStack.cpp9
1 files changed, 9 insertions, 0 deletions
diff --git a/libsolidity/interface/AssemblyStack.cpp b/libsolidity/interface/AssemblyStack.cpp
index 24e190b3..f361c5da 100644
--- a/libsolidity/interface/AssemblyStack.cpp
+++ b/libsolidity/interface/AssemblyStack.cpp
@@ -34,6 +34,8 @@
#include <libevmasm/Assembly.h>
+#include <libyul/optimiser/Suite.h>
+
using namespace std;
using namespace dev;
using namespace langutil;
@@ -79,6 +81,13 @@ bool AssemblyStack::parseAndAnalyze(std::string const& _sourceName, std::string
return analyzeParsed();
}
+void AssemblyStack::optimize()
+{
+ solAssert(m_language != Language::Assembly, "Optimization requested for loose assembly.");
+ yul::OptimiserSuite::run(*m_parserResult->code, *m_parserResult->analysisInfo);
+ solAssert(analyzeParsed(), "Invalid source code after optimization.");
+}
+
bool AssemblyStack::analyzeParsed()
{
solAssert(m_parserResult, "");