aboutsummaryrefslogtreecommitdiffstats
path: root/test/tools/yulopti.cpp
diff options
context:
space:
mode:
authorchriseth <chris@ethereum.org>2018-12-03 22:48:03 +0800
committerGitHub <noreply@github.com>2018-12-03 22:48:03 +0800
commitc8a2cb62832afb2dc09ccee6fd42c1516dfdb981 (patch)
tree7977e9dcbbc215088c05b847f849871ef5d4ae66 /test/tools/yulopti.cpp
parent1d4f565a64988a3400847d2655ca24f73f234bc6 (diff)
parent590be1d84cea9850ce69b68be3dc5294b39041e5 (diff)
downloaddexon-solidity-c8a2cb62832afb2dc09ccee6fd42c1516dfdb981.tar
dexon-solidity-c8a2cb62832afb2dc09ccee6fd42c1516dfdb981.tar.gz
dexon-solidity-c8a2cb62832afb2dc09ccee6fd42c1516dfdb981.tar.bz2
dexon-solidity-c8a2cb62832afb2dc09ccee6fd42c1516dfdb981.tar.lz
dexon-solidity-c8a2cb62832afb2dc09ccee6fd42c1516dfdb981.tar.xz
dexon-solidity-c8a2cb62832afb2dc09ccee6fd42c1516dfdb981.tar.zst
dexon-solidity-c8a2cb62832afb2dc09ccee6fd42c1516dfdb981.zip
Merge pull request #5571 from ethereum/develop
Version 0.5.1
Diffstat (limited to 'test/tools/yulopti.cpp')
-rw-r--r--test/tools/yulopti.cpp36
1 files changed, 20 insertions, 16 deletions
diff --git a/test/tools/yulopti.cpp b/test/tools/yulopti.cpp
index 348c5f4a..5273bbb9 100644
--- a/test/tools/yulopti.cpp
+++ b/test/tools/yulopti.cpp
@@ -19,15 +19,15 @@
*/
#include <libdevcore/CommonIO.h>
-#include <libsolidity/inlineasm/AsmAnalysis.h>
-#include <libsolidity/inlineasm/AsmAnalysisInfo.h>
-#include <libsolidity/parsing/Scanner.h>
+#include <liblangutil/ErrorReporter.h>
+#include <liblangutil/Scanner.h>
+#include <libyul/AsmAnalysis.h>
+#include <libyul/AsmAnalysisInfo.h>
#include <libsolidity/parsing/Parser.h>
-#include <libsolidity/inlineasm/AsmData.h>
-#include <libsolidity/inlineasm/AsmParser.h>
-#include <libsolidity/inlineasm/AsmPrinter.h>
-#include <libsolidity/interface/SourceReferenceFormatter.h>
-#include <libsolidity/interface/ErrorReporter.h>
+#include <libyul/AsmData.h>
+#include <libyul/AsmParser.h>
+#include <libyul/AsmPrinter.h>
+#include <liblangutil/SourceReferenceFormatter.h>
#include <libyul/optimiser/BlockFlattener.h>
#include <libyul/optimiser/Disambiguator.h>
@@ -38,6 +38,7 @@
#include <libyul/optimiser/FunctionHoister.h>
#include <libyul/optimiser/ExpressionInliner.h>
#include <libyul/optimiser/FullInliner.h>
+#include <libyul/optimiser/ForLoopInitRewriter.h>
#include <libyul/optimiser/MainFunction.h>
#include <libyul/optimiser/Rematerialiser.h>
#include <libyul/optimiser/ExpressionSimplifier.h>
@@ -57,9 +58,9 @@
using namespace std;
using namespace dev;
+using namespace langutil;
using namespace dev::solidity;
-using namespace dev::solidity::assembly;
-using namespace dev::yul;
+using namespace yul;
namespace po = boost::program_options;
@@ -80,15 +81,15 @@ public:
bool parse(string const& _input)
{
ErrorReporter errorReporter(m_errors);
- shared_ptr<Scanner> scanner = make_shared<Scanner>(CharStream(_input), "");
- m_ast = assembly::Parser(errorReporter, assembly::AsmFlavour::Strict).parse(scanner, false);
+ shared_ptr<Scanner> scanner = make_shared<Scanner>(CharStream(_input, ""));
+ m_ast = yul::Parser(errorReporter, yul::AsmFlavour::Strict).parse(scanner, false);
if (!m_ast || !errorReporter.errors().empty())
{
cout << "Error parsing source." << endl;
printErrors(*scanner);
return false;
}
- m_analysisInfo = make_shared<assembly::AsmAnalysisInfo>();
+ m_analysisInfo = make_shared<yul::AsmAnalysisInfo>();
AsmAnalyzer analyzer(
*m_analysisInfo,
errorReporter,
@@ -116,14 +117,14 @@ public:
return;
if (!disambiguated)
{
- *m_ast = boost::get<assembly::Block>(Disambiguator(*m_analysisInfo)(*m_ast));
+ *m_ast = boost::get<yul::Block>(Disambiguator(*m_analysisInfo)(*m_ast));
m_analysisInfo.reset();
m_nameDispenser = make_shared<NameDispenser>(*m_ast);
disambiguated = true;
}
cout << "(q)quit/(f)flatten/(c)se/propagate var(d)ecls/(x)plit/(j)oin/(g)rouper/(h)oister/" << endl;
cout << " (e)xpr inline/(i)nline/(s)implify/(u)nusedprune/ss(a) transform/" << endl;
- cout << " (r)edundant assign elim./re(m)aterializer? ";
+ cout << " (r)edundant assign elim./re(m)aterializer/f(o)r-loop-pre-rewriter? ";
cout.flush();
int option = readStandardInputChar();
cout << ' ' << char(option) << endl;
@@ -134,6 +135,9 @@ public:
case 'f':
BlockFlattener{}(*m_ast);
break;
+ case 'o':
+ ForLoopInitRewriter{}(*m_ast);
+ break;
case 'c':
(CommonSubexpressionEliminator{})(*m_ast);
break;
@@ -182,7 +186,7 @@ public:
private:
ErrorList m_errors;
- shared_ptr<assembly::Block> m_ast;
+ shared_ptr<yul::Block> m_ast;
shared_ptr<AsmAnalysisInfo> m_analysisInfo;
shared_ptr<NameDispenser> m_nameDispenser;
};