From 45705b0e292d0e1ba2a79ca06d84fd76529ed76b Mon Sep 17 00:00:00 2001 From: chriseth Date: Mon, 7 Oct 2019 08:16:28 +0200 Subject: [PATCH] Debug optimizer steps. --- libyul/optimiser/Suite.cpp | 16 ++++++++++++++++ libyul/optimiser/Suite.h | 3 ++- 2 files changed, 18 insertions(+), 1 deletion(-) diff --git a/libyul/optimiser/Suite.cpp b/libyul/optimiser/Suite.cpp index a23f1f24e..04a0a02d0 100644 --- a/libyul/optimiser/Suite.cpp +++ b/libyul/optimiser/Suite.cpp @@ -45,6 +45,7 @@ #include #include #include +#include #include #include #include @@ -343,10 +344,25 @@ map> const& OptimiserSuite::allSteps() void OptimiserSuite::runSequence(std::vector const& _steps, Block& _ast) { + unique_ptr copy; + if (m_debug == Debug::PrintChanges) + copy = make_unique(boost::get(ASTCopier{}(_ast))); for (string const& step: _steps) { if (m_debug == Debug::PrintStep) cout << "Running " << step << endl; allSteps().at(step)->run(m_context, _ast); + if (m_debug == Debug::PrintChanges) + { + // TODO should add switch to also compare variable names! + if (SyntacticallyEqual{}.statementEqual(_ast, *copy)) + cout << "== Running " << step << " did not cause changes." << endl; + else + { + cout << "== Running " << step << " changed the AST." << endl; + cout << AsmPrinter{}(_ast) << endl; + copy = make_unique(boost::get(ASTCopier{}(_ast))); + } + } } } diff --git a/libyul/optimiser/Suite.h b/libyul/optimiser/Suite.h index f47574799..8dce75f9d 100644 --- a/libyul/optimiser/Suite.h +++ b/libyul/optimiser/Suite.h @@ -48,7 +48,8 @@ public: enum class Debug { None, - PrintStep + PrintStep, + PrintChanges }; static void run( Dialect const& _dialect,