aboutsummaryrefslogtreecommitdiffstats
path: root/libyul/optimiser/UnusedPruner.cpp
diff options
context:
space:
mode:
authorchriseth <chris@ethereum.org>2018-12-21 01:55:32 +0800
committerchriseth <chris@ethereum.org>2019-01-07 23:41:03 +0800
commit9222eff08fad8e6a0ea7df8b299880f90c68c8b3 (patch)
tree20b9a2e40164fb693ab52e75ad1cd2388d142473 /libyul/optimiser/UnusedPruner.cpp
parentd9910f2a1258e8d16d7a57905dabcd09db4e6a8d (diff)
downloaddexon-solidity-9222eff08fad8e6a0ea7df8b299880f90c68c8b3.tar.gz
dexon-solidity-9222eff08fad8e6a0ea7df8b299880f90c68c8b3.tar.zst
dexon-solidity-9222eff08fad8e6a0ea7df8b299880f90c68c8b3.zip
Make the dialect available everywhere.
Diffstat (limited to 'libyul/optimiser/UnusedPruner.cpp')
-rw-r--r--libyul/optimiser/UnusedPruner.cpp15
1 files changed, 10 insertions, 5 deletions
diff --git a/libyul/optimiser/UnusedPruner.cpp b/libyul/optimiser/UnusedPruner.cpp
index 31aead82..53c412e3 100644
--- a/libyul/optimiser/UnusedPruner.cpp
+++ b/libyul/optimiser/UnusedPruner.cpp
@@ -32,7 +32,8 @@ using namespace std;
using namespace dev;
using namespace yul;
-UnusedPruner::UnusedPruner(Block& _ast, set<YulString> const& _externallyUsedFunctions)
+UnusedPruner::UnusedPruner(Dialect const& _dialect, Block& _ast, set<YulString> const& _externallyUsedFunctions):
+ m_dialect(_dialect)
{
ReferencesCounter counter;
counter(_ast);
@@ -69,7 +70,7 @@ void UnusedPruner::operator()(Block& _block)
{
if (!varDecl.value)
statement = Block{std::move(varDecl.location), {}};
- else if (MovableChecker(*varDecl.value).movable())
+ else if (MovableChecker(m_dialect, *varDecl.value).movable())
{
subtractReferences(ReferencesCounter::countReferences(*varDecl.value));
statement = Block{std::move(varDecl.location), {}};
@@ -87,7 +88,7 @@ void UnusedPruner::operator()(Block& _block)
else if (statement.type() == typeid(ExpressionStatement))
{
ExpressionStatement& exprStmt = boost::get<ExpressionStatement>(statement);
- if (MovableChecker(exprStmt.expression).movable())
+ if (MovableChecker(m_dialect, exprStmt.expression).movable())
{
// pop(x) should be movable!
subtractReferences(ReferencesCounter::countReferences(exprStmt.expression));
@@ -100,11 +101,15 @@ void UnusedPruner::operator()(Block& _block)
ASTModifier::operator()(_block);
}
-void UnusedPruner::runUntilStabilised(Block& _ast, set<YulString> const& _externallyUsedFunctions)
+void UnusedPruner::runUntilStabilised(
+ Dialect const& _dialect,
+ Block& _ast,
+ set<YulString> const& _externallyUsedFunctions
+)
{
while (true)
{
- UnusedPruner pruner(_ast, _externallyUsedFunctions);
+ UnusedPruner pruner(_dialect, _ast, _externallyUsedFunctions);
pruner(_ast);
if (!pruner.shouldRunAgain())
return;