mirror of
https://github.com/ethereum/solidity
synced 2023-10-03 13:03:40 +00:00
Constant optimiser for Yul.
This commit is contained in:
@@ -23,6 +23,7 @@
|
||||
#include <libyul/optimiser/VarDeclInitializer.h>
|
||||
#include <libyul/optimiser/VarNameCleaner.h>
|
||||
#include <libyul/optimiser/ControlFlowSimplifier.h>
|
||||
#include <libyul/optimiser/ConstantOptimiser.h>
|
||||
#include <libyul/optimiser/DeadCodeEliminator.h>
|
||||
#include <libyul/optimiser/Disambiguator.h>
|
||||
#include <libyul/optimiser/CommonSubexpressionEliminator.h>
|
||||
@@ -46,6 +47,7 @@
|
||||
#include <libyul/optimiser/StructuralSimplifier.h>
|
||||
#include <libyul/optimiser/StackCompressor.h>
|
||||
#include <libyul/optimiser/Suite.h>
|
||||
#include <libyul/optimiser/Metrics.h>
|
||||
#include <libyul/backends/evm/EVMDialect.h>
|
||||
#include <libyul/backends/wasm/WordSizeTransform.h>
|
||||
#include <libyul/AsmPrinter.h>
|
||||
@@ -118,6 +120,11 @@ TestCase::TestResult YulOptimizerTest::run(ostream& _stream, string const& _line
|
||||
disambiguate();
|
||||
BlockFlattener{}(*m_ast);
|
||||
}
|
||||
else if (m_optimizerStep == "constantOptimiser")
|
||||
{
|
||||
GasMeter meter(dynamic_cast<EVMDialect const&>(*m_dialect), false, 200);
|
||||
ConstantOptimiser{dynamic_cast<EVMDialect const&>(*m_dialect), meter}(*m_ast);
|
||||
}
|
||||
else if (m_optimizerStep == "varDeclInitializer")
|
||||
VarDeclInitializer{}(*m_ast);
|
||||
else if (m_optimizerStep == "varNameCleaner")
|
||||
@@ -288,7 +295,10 @@ TestCase::TestResult YulOptimizerTest::run(ostream& _stream, string const& _line
|
||||
WordSizeTransform::run(*m_ast, nameDispenser);
|
||||
}
|
||||
else if (m_optimizerStep == "fullSuite")
|
||||
OptimiserSuite::run(*m_dialect, *m_ast, *m_analysisInfo, true);
|
||||
{
|
||||
GasMeter meter(dynamic_cast<EVMDialect const&>(*m_dialect), false, 200);
|
||||
OptimiserSuite::run(*m_dialect, meter, *m_ast, *m_analysisInfo, true);
|
||||
}
|
||||
else
|
||||
{
|
||||
AnsiColorized(_stream, _formatted, {formatting::BOLD, formatting::RED}) << _linePrefix << "Invalid optimizer step: " << m_optimizerStep << endl;
|
||||
|
||||
Reference in New Issue
Block a user