mirror of
https://github.com/ethereum/solidity
synced 2023-10-03 13:03:40 +00:00
Yul: Adds optimizer pass to make variable names suffix-canonical.
This commit is contained in:
committed by
Leonardo Alt
parent
c3e4c42bbd
commit
609855546e
+20
-13
@@ -40,10 +40,14 @@
|
||||
#include <libyul/optimiser/StackCompressor.h>
|
||||
#include <libyul/optimiser/StructuralSimplifier.h>
|
||||
#include <libyul/optimiser/RedundantAssignEliminator.h>
|
||||
#include <libyul/optimiser/VarNameCleaner.h>
|
||||
#include <libyul/AsmAnalysis.h>
|
||||
#include <libyul/AsmAnalysisInfo.h>
|
||||
#include <libyul/AsmData.h>
|
||||
#include <libyul/AsmPrinter.h>
|
||||
|
||||
#include <libyul/backends/evm/NoOutputAssembly.h>
|
||||
|
||||
#include <libdevcore/CommonData.h>
|
||||
|
||||
using namespace std;
|
||||
@@ -61,16 +65,16 @@ void OptimiserSuite::run(
|
||||
|
||||
Block ast = boost::get<Block>(Disambiguator(*_dialect, _analysisInfo, reservedIdentifiers)(_ast));
|
||||
|
||||
(VarDeclInitializer{})(ast);
|
||||
(FunctionHoister{})(ast);
|
||||
(BlockFlattener{})(ast);
|
||||
(FunctionGrouper{})(ast);
|
||||
VarDeclInitializer{}(ast);
|
||||
FunctionHoister{}(ast);
|
||||
BlockFlattener{}(ast);
|
||||
FunctionGrouper{}(ast);
|
||||
EquivalentFunctionCombiner::run(ast);
|
||||
UnusedPruner::runUntilStabilised(*_dialect, ast, reservedIdentifiers);
|
||||
(ForLoopInitRewriter{})(ast);
|
||||
(BlockFlattener{})(ast);
|
||||
ForLoopInitRewriter{}(ast);
|
||||
BlockFlattener{}(ast);
|
||||
StructuralSimplifier{*_dialect}(ast);
|
||||
(BlockFlattener{})(ast);
|
||||
BlockFlattener{}(ast);
|
||||
|
||||
// None of the above can make stack problems worse.
|
||||
|
||||
@@ -92,7 +96,7 @@ void OptimiserSuite::run(
|
||||
{
|
||||
// still in SSA, perform structural simplification
|
||||
StructuralSimplifier{*_dialect}(ast);
|
||||
(BlockFlattener{})(ast);
|
||||
BlockFlattener{}(ast);
|
||||
UnusedPruner::runUntilStabilised(*_dialect, ast, reservedIdentifiers);
|
||||
}
|
||||
{
|
||||
@@ -130,10 +134,10 @@ void OptimiserSuite::run(
|
||||
|
||||
{
|
||||
// run full inliner
|
||||
(FunctionGrouper{})(ast);
|
||||
FunctionGrouper{}(ast);
|
||||
EquivalentFunctionCombiner::run(ast);
|
||||
FullInliner{ast, dispenser}.run();
|
||||
(BlockFlattener{})(ast);
|
||||
BlockFlattener{}(ast);
|
||||
}
|
||||
|
||||
{
|
||||
@@ -143,7 +147,7 @@ void OptimiserSuite::run(
|
||||
RedundantAssignEliminator::run(*_dialect, ast);
|
||||
ExpressionSimplifier::run(*_dialect, ast);
|
||||
StructuralSimplifier{*_dialect}(ast);
|
||||
(BlockFlattener{})(ast);
|
||||
BlockFlattener{}(ast);
|
||||
CommonSubexpressionEliminator{*_dialect}(ast);
|
||||
SSATransform::run(ast, dispenser);
|
||||
RedundantAssignEliminator::run(*_dialect, ast);
|
||||
@@ -171,9 +175,12 @@ void OptimiserSuite::run(
|
||||
Rematerialiser::run(*_dialect, ast);
|
||||
UnusedPruner::runUntilStabilised(*_dialect, ast, reservedIdentifiers);
|
||||
|
||||
(FunctionGrouper{})(ast);
|
||||
FunctionGrouper{}(ast);
|
||||
StackCompressor::run(_dialect, ast);
|
||||
(BlockFlattener{})(ast);
|
||||
BlockFlattener{}(ast);
|
||||
|
||||
VarNameCleaner{ast, *_dialect, reservedIdentifiers}(ast);
|
||||
yul::AsmAnalyzer::analyzeStrictAssertCorrect(_dialect, ast);
|
||||
|
||||
_ast = std::move(ast);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user