mirror of
https://github.com/ethereum/solidity
synced 2023-10-03 13:03:40 +00:00
Properly assign types in control flow simplifier.
This commit is contained in:
@@ -23,6 +23,7 @@ namespace solidity::yul
|
||||
{
|
||||
struct Dialect;
|
||||
struct OptimiserStepContext;
|
||||
class TypeInfo;
|
||||
|
||||
/**
|
||||
* Simplifies several control-flow structures:
|
||||
@@ -61,11 +62,18 @@ public:
|
||||
void visit(Statement& _st) override;
|
||||
|
||||
private:
|
||||
ControlFlowSimplifier(Dialect const& _dialect): m_dialect(_dialect) {}
|
||||
ControlFlowSimplifier(Dialect const& _dialect, TypeInfo const& _typeInfo):
|
||||
m_dialect(_dialect),
|
||||
m_typeInfo(_typeInfo)
|
||||
{}
|
||||
|
||||
void simplify(std::vector<Statement>& _statements);
|
||||
|
||||
std::optional<std::vector<Statement>> reduceNoCaseSwitch(Switch& _switchStmt) const;
|
||||
std::optional<std::vector<Statement>> reduceSingleCaseSwitch(Switch& _switchStmt) const;
|
||||
|
||||
Dialect const& m_dialect;
|
||||
TypeInfo const& m_typeInfo;
|
||||
size_t m_numBreakStatements = 0;
|
||||
size_t m_numContinueStatements = 0;
|
||||
};
|
||||
|
||||
Reference in New Issue
Block a user