From 4129c2749597419fe31adc46e386c9d0248696f9 Mon Sep 17 00:00:00 2001 From: cameel Date: Fri, 24 Jan 2020 23:51:35 +0100 Subject: [PATCH] [yulopti] Replace hard-coded step list with OptimiserSuite's maps --- test/tools/yulopti.cpp | 126 +++++------------------------------------ 1 file changed, 14 insertions(+), 112 deletions(-) diff --git a/test/tools/yulopti.cpp b/test/tools/yulopti.cpp index b0c0e0b35..fa291672d 100644 --- a/test/tools/yulopti.cpp +++ b/test/tools/yulopti.cpp @@ -30,40 +30,11 @@ #include #include -#include #include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include #include -#include -#include -#include #include -#include -#include -#include #include -#include -#include +#include #include @@ -71,6 +42,7 @@ #include +#include #include #include #include @@ -150,90 +122,26 @@ public: cout << ' ' << char(option) << endl; OptimiserStepContext context{m_dialect, *m_nameDispenser, reservedIdentifiers}; - switch (option) + + map const& abbreviationMap = OptimiserSuite::stepAbbreviationToNameMap(); + assert(abbreviationMap.count('q') == 0 && "We have chosen 'q' for quit"); + assert(abbreviationMap.count('p') == 0 && "We have chosen 'p' for StackCompressor"); + + auto abbreviationAndName = abbreviationMap.find(option); + if (abbreviationAndName != abbreviationMap.end()) + { + OptimiserStep const& step = *OptimiserSuite::allSteps().at(abbreviationAndName->second); + step.run(context, *m_ast); + } + else switch (option) { case 'q': return; - case 'f': - BlockFlattener::run(context, *m_ast); - break; - case 'o': - ForLoopInitRewriter::run(context, *m_ast); - break; - case 'O': - ForLoopConditionOutOfBody::run(context, *m_ast); - break; - case 'I': - ForLoopConditionIntoBody::run(context, *m_ast); - break; - case 'c': - CommonSubexpressionEliminator::run(context, *m_ast); - break; - case 'C': - ConditionalSimplifier::run(context, *m_ast); - break; - case 'U': - ConditionalUnsimplifier::run(context, *m_ast); - break; - case 'd': - VarDeclInitializer::run(context, *m_ast); - break; case 'l': VarNameCleaner::run(context, *m_ast); // VarNameCleaner destroys the unique names guarantee of the disambiguator. disambiguated = false; break; - case 'x': - ExpressionSplitter::run(context, *m_ast); - break; - case 'j': - ExpressionJoiner::run(context, *m_ast); - break; - case 'g': - FunctionGrouper::run(context, *m_ast); - break; - case 'h': - FunctionHoister::run(context, *m_ast); - break; - case 'e': - ExpressionInliner::run(context, *m_ast); - break; - case 'i': - FullInliner::run(context, *m_ast); - break; - case 's': - ExpressionSimplifier::run(context, *m_ast); - break; - case 't': - StructuralSimplifier::run(context, *m_ast); - break; - case 'T': - LiteralRematerialiser::run(context, *m_ast); - break; - case 'n': - ControlFlowSimplifier::run(context, *m_ast); - break; - case 'u': - UnusedPruner::run(context, *m_ast); - break; - case 'D': - DeadCodeEliminator::run(context, *m_ast); - break; - case 'a': - SSATransform::run(context, *m_ast); - break; - case 'r': - RedundantAssignEliminator::run(context, *m_ast); - break; - case 'm': - Rematerialiser::run(context, *m_ast); - break; - case 'v': - EquivalentFunctionCombiner::run(context, *m_ast); - break; - case 'V': - SSAReverser::run(context, *m_ast); - break; case 'p': { Object obj; @@ -241,12 +149,6 @@ public: StackCompressor::run(m_dialect, obj, true, 16); break; } - case 'L': - LoadResolver::run(context, *m_ast); - break; - case 'M': - LoopInvariantCodeMotion::run(context, *m_ast); - break; default: cout << "Unknown option." << endl; }