aboutsummaryrefslogtreecommitdiffstats
path: root/libyul/optimiser/Suite.cpp
diff options
context:
space:
mode:
authorchriseth <chris@ethereum.org>2019-01-08 00:23:05 +0800
committerGitHub <noreply@github.com>2019-01-08 00:23:05 +0800
commit9f5d34af7de481c5b8ce89057a6df2a3283d14b0 (patch)
tree273c2c234e637a8c33ebbe041d8f2c4f8ef99c51 /libyul/optimiser/Suite.cpp
parent165a6891212bd440a65da4084a823dccbf83a433 (diff)
parent9222eff08fad8e6a0ea7df8b299880f90c68c8b3 (diff)
downloaddexon-solidity-9f5d34af7de481c5b8ce89057a6df2a3283d14b0.tar.gz
dexon-solidity-9f5d34af7de481c5b8ce89057a6df2a3283d14b0.tar.zst
dexon-solidity-9f5d34af7de481c5b8ce89057a6df2a3283d14b0.zip
Merge pull request #5752 from ethereum/addDialect
[Yul] Refactor: Make the dialect available everywhere.
Diffstat (limited to 'libyul/optimiser/Suite.cpp')
-rw-r--r--libyul/optimiser/Suite.cpp71
1 files changed, 36 insertions, 35 deletions
diff --git a/libyul/optimiser/Suite.cpp b/libyul/optimiser/Suite.cpp
index c0fd15a2..9b6e1337 100644
--- a/libyul/optimiser/Suite.cpp
+++ b/libyul/optimiser/Suite.cpp
@@ -47,6 +47,7 @@ using namespace dev;
using namespace yul;
void OptimiserSuite::run(
+ Dialect const& _dialect,
Block& _ast,
AsmAnalysisInfo const& _analysisInfo,
set<YulString> const& _externallyUsedIdentifiers
@@ -54,69 +55,69 @@ void OptimiserSuite::run(
{
set<YulString> reservedIdentifiers = _externallyUsedIdentifiers;
- Block ast = boost::get<Block>(Disambiguator(_analysisInfo, reservedIdentifiers)(_ast));
+ Block ast = boost::get<Block>(Disambiguator(_dialect, _analysisInfo, reservedIdentifiers)(_ast));
(VarDeclInitializer{})(ast);
(FunctionHoister{})(ast);
(FunctionGrouper{})(ast);
(ForLoopInitRewriter{})(ast);
- StructuralSimplifier{}(ast);
+ StructuralSimplifier{_dialect}(ast);
- NameDispenser dispenser{ast};
+ NameDispenser dispenser{_dialect, ast};
for (size_t i = 0; i < 4; i++)
{
ExpressionSplitter{dispenser}(ast);
SSATransform::run(ast, dispenser);
- RedundantAssignEliminator::run(ast);
- RedundantAssignEliminator::run(ast);
+ RedundantAssignEliminator::run(_dialect, ast);
+ RedundantAssignEliminator::run(_dialect, ast);
- CommonSubexpressionEliminator{}(ast);
- ExpressionSimplifier::run(ast);
- StructuralSimplifier{}(ast);
+ CommonSubexpressionEliminator{_dialect}(ast);
+ ExpressionSimplifier::run(_dialect, ast);
+ StructuralSimplifier{_dialect}(ast);
SSATransform::run(ast, dispenser);
- RedundantAssignEliminator::run(ast);
- RedundantAssignEliminator::run(ast);
- UnusedPruner::runUntilStabilised(ast, reservedIdentifiers);
- CommonSubexpressionEliminator{}(ast);
- UnusedPruner::runUntilStabilised(ast, reservedIdentifiers);
+ RedundantAssignEliminator::run(_dialect, ast);
+ RedundantAssignEliminator::run(_dialect, ast);
+ UnusedPruner::runUntilStabilised(_dialect, ast, reservedIdentifiers);
+ CommonSubexpressionEliminator{_dialect}(ast);
+ UnusedPruner::runUntilStabilised(_dialect, ast, reservedIdentifiers);
SSATransform::run(ast, dispenser);
- RedundantAssignEliminator::run(ast);
- RedundantAssignEliminator::run(ast);
+ RedundantAssignEliminator::run(_dialect, ast);
+ RedundantAssignEliminator::run(_dialect, ast);
ExpressionJoiner::run(ast);
ExpressionJoiner::run(ast);
- ExpressionInliner(ast).run();
- UnusedPruner::runUntilStabilised(ast);
+ ExpressionInliner(_dialect, ast).run();
+ UnusedPruner::runUntilStabilised(_dialect, ast);
ExpressionSplitter{dispenser}(ast);
SSATransform::run(ast, dispenser);
- RedundantAssignEliminator::run(ast);
- RedundantAssignEliminator::run(ast);
- CommonSubexpressionEliminator{}(ast);
+ RedundantAssignEliminator::run(_dialect, ast);
+ RedundantAssignEliminator::run(_dialect, ast);
+ CommonSubexpressionEliminator{_dialect}(ast);
FullInliner{ast, dispenser}.run();
SSATransform::run(ast, dispenser);
- RedundantAssignEliminator::run(ast);
- RedundantAssignEliminator::run(ast);
- ExpressionSimplifier::run(ast);
- StructuralSimplifier{}(ast);
- CommonSubexpressionEliminator{}(ast);
+ RedundantAssignEliminator::run(_dialect, ast);
+ RedundantAssignEliminator::run(_dialect, ast);
+ ExpressionSimplifier::run(_dialect, ast);
+ StructuralSimplifier{_dialect}(ast);
+ CommonSubexpressionEliminator{_dialect}(ast);
SSATransform::run(ast, dispenser);
- RedundantAssignEliminator::run(ast);
- RedundantAssignEliminator::run(ast);
- UnusedPruner::runUntilStabilised(ast, reservedIdentifiers);
- CommonSubexpressionEliminator{}(ast);
+ RedundantAssignEliminator::run(_dialect, ast);
+ RedundantAssignEliminator::run(_dialect, ast);
+ UnusedPruner::runUntilStabilised(_dialect, ast, reservedIdentifiers);
+ CommonSubexpressionEliminator{_dialect}(ast);
}
ExpressionJoiner::run(ast);
- Rematerialiser::run(ast);
- UnusedPruner::runUntilStabilised(ast);
+ Rematerialiser::run(_dialect, ast);
+ UnusedPruner::runUntilStabilised(_dialect, ast);
ExpressionJoiner::run(ast);
- UnusedPruner::runUntilStabilised(ast);
+ UnusedPruner::runUntilStabilised(_dialect, ast);
ExpressionJoiner::run(ast);
- UnusedPruner::runUntilStabilised(ast);
+ UnusedPruner::runUntilStabilised(_dialect, ast);
ExpressionJoiner::run(ast);
- Rematerialiser::run(ast);
- UnusedPruner::runUntilStabilised(ast);
+ Rematerialiser::run(_dialect, ast);
+ UnusedPruner::runUntilStabilised(_dialect, ast);
_ast = std::move(ast);
}