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
+12 -5
View File
@@ -21,6 +21,7 @@
#include <libyul/AsmDataForward.h>
#include <libyul/optimiser/ASTWalker.h>
#include <libyul/YulString.h>
#include <libyul/optimiser/OptimiserStep.h>
#include <map>
#include <set>
@@ -43,11 +44,11 @@ struct Dialect;
class VarNameCleaner: public ASTModifier
{
public:
VarNameCleaner(
Block const& _ast,
Dialect const& _dialect,
std::set<YulString> _blacklist = {}
);
static constexpr char const* name{"VarNameCleaner"};
static void run(OptimiserStepContext& _context, Block& _ast)
{
VarNameCleaner{_ast, _context.dialect, _context.reservedIdentifiers}(_ast);
}
using ASTModifier::operator();
void operator()(VariableDeclaration& _varDecl) override;
@@ -55,6 +56,12 @@ public:
void operator()(FunctionDefinition& _funDef) override;
private:
VarNameCleaner(
Block const& _ast,
Dialect const& _dialect,
std::set<YulString> _blacklist = {}
);
/// Tries to rename a list of variables.
void renameVariables(std::vector<TypedName>& _variables);