Refactor Optimiser Steps Interface.

This commit is contained in:
chriseth
2019-09-24 14:52:01 +02:00
parent c4208a6ab8
commit 9ce1ca2340
49 changed files with 674 additions and 293 deletions
+17 -3
View File
@@ -21,6 +21,7 @@
#pragma once
#include <libyul/optimiser/DataFlowAnalyzer.h>
#include <libyul/optimiser/OptimiserStep.h>
namespace yul
{
@@ -38,6 +39,12 @@ namespace yul
class Rematerialiser: public DataFlowAnalyzer
{
public:
static constexpr char const* name{"Rematerialiser"};
static void run(
OptimiserStepContext& _context,
Block& _ast
) { run(_context.dialect, _ast); }
static void run(
Dialect const& _dialect,
Block& _ast,
@@ -80,12 +87,19 @@ protected:
class LiteralRematerialiser: public DataFlowAnalyzer
{
public:
LiteralRematerialiser(Dialect const& _dialect):
DataFlowAnalyzer(_dialect)
{}
static constexpr char const* name{"LiteralRematerialiser"};
static void run(
OptimiserStepContext& _context,
Block& _ast
) { LiteralRematerialiser{_context.dialect}(_ast); }
using ASTModifier::visit;
void visit(Expression& _e) override;
private:
LiteralRematerialiser(Dialect const& _dialect):
DataFlowAnalyzer(_dialect)
{}
};