Control flow side effects on non-disambiguated source.

This commit is contained in:
chriseth
2021-11-04 16:32:11 +01:00
parent 25c41546ee
commit 776ae466bc
9 changed files with 128 additions and 87 deletions
+4 -2
View File
@@ -29,8 +29,10 @@ using namespace solidity::util;
void ConditionalSimplifier::run(OptimiserStepContext& _context, Block& _ast)
{
ControlFlowSideEffectsCollector sideEffects(_context.dialect, _ast);
ConditionalSimplifier{_context.dialect, sideEffects.functionSideEffects()}(_ast);
ConditionalSimplifier{
_context.dialect,
ControlFlowSideEffectsCollector{_context.dialect, _ast}.functionSideEffectsNamed()
}(_ast);
}
void ConditionalSimplifier::operator()(Switch& _switch)
+3 -3
View File
@@ -62,12 +62,12 @@ public:
private:
explicit ConditionalSimplifier(
Dialect const& _dialect,
std::map<YulString, ControlFlowSideEffects> const& _sideEffects
std::map<YulString, ControlFlowSideEffects> _sideEffects
):
m_dialect(_dialect), m_functionSideEffects(_sideEffects)
m_dialect(_dialect), m_functionSideEffects(move(_sideEffects))
{}
Dialect const& m_dialect;
std::map<YulString, ControlFlowSideEffects> const& m_functionSideEffects;
std::map<YulString, ControlFlowSideEffects> m_functionSideEffects;
};
}
+4 -2
View File
@@ -30,8 +30,10 @@ using namespace solidity::util;
void ConditionalUnsimplifier::run(OptimiserStepContext& _context, Block& _ast)
{
ControlFlowSideEffectsCollector sideEffects(_context.dialect, _ast);
ConditionalUnsimplifier{_context.dialect, sideEffects.functionSideEffects()}(_ast);
ConditionalUnsimplifier{
_context.dialect,
ControlFlowSideEffectsCollector{_context.dialect, _ast}.functionSideEffectsNamed()
}(_ast);
}
void ConditionalUnsimplifier::operator()(Switch& _switch)
+1 -1
View File
@@ -40,7 +40,7 @@ void DeadCodeEliminator::run(OptimiserStepContext& _context, Block& _ast)
ControlFlowSideEffectsCollector sideEffects(_context.dialect, _ast);
DeadCodeEliminator{
_context.dialect,
sideEffects.functionSideEffects()
sideEffects.functionSideEffectsNamed()
}(_ast);
}
+4 -4
View File
@@ -23,6 +23,7 @@
#include <libyul/optimiser/ASTWalker.h>
#include <libyul/YulString.h>
#include <libyul/ControlFlowSideEffects.h>
#include <map>
#include <set>
@@ -31,7 +32,6 @@ namespace solidity::yul
{
struct Dialect;
struct OptimiserStepContext;
struct ControlFlowSideEffects;
/**
* Optimisation stage that removes unreachable code
@@ -62,11 +62,11 @@ public:
private:
DeadCodeEliminator(
Dialect const& _dialect,
std::map<YulString, ControlFlowSideEffects> const& _sideEffects
): m_dialect(_dialect), m_functionSideEffects(_sideEffects) {}
std::map<YulString, ControlFlowSideEffects> _sideEffects
): m_dialect(_dialect), m_functionSideEffects(move(_sideEffects)) {}
Dialect const& m_dialect;
std::map<YulString, ControlFlowSideEffects> const& m_functionSideEffects;
std::map<YulString, ControlFlowSideEffects> m_functionSideEffects;
};
}