Add equivalent function combiner as Yul optimizer step.

This commit is contained in:
Daniel Kirchner
2019-01-15 17:21:03 +01:00
parent 6146c59a1a
commit 81f24f24e6
20 changed files with 761 additions and 165 deletions
+5 -1
View File
@@ -33,6 +33,7 @@
#include <libyul/optimiser/Disambiguator.h>
#include <libyul/optimiser/CommonSubexpressionEliminator.h>
#include <libyul/optimiser/NameCollector.h>
#include <libyul/optimiser/EquivalentFunctionCombiner.h>
#include <libyul/optimiser/ExpressionSplitter.h>
#include <libyul/optimiser/FunctionGrouper.h>
#include <libyul/optimiser/FunctionHoister.h>
@@ -128,7 +129,7 @@ public:
cout << "(q)quit/(f)flatten/(c)se/initialize var(d)ecls/(x)plit/(j)oin/(g)rouper/(h)oister/" << endl;
cout << " (e)xpr inline/(i)nline/(s)implify/(u)nusedprune/ss(a) transform/" << endl;
cout << " (r)edundant assign elim./re(m)aterializer/f(o)r-loop-pre-rewriter/" << endl;
cout << " s(t)ructural simplifier? " << endl;
cout << " s(t)ructural simplifier/equi(v)alent function combiner? " << endl;
cout.flush();
int option = readStandardInputChar();
cout << ' ' << char(option) << endl;
@@ -184,6 +185,9 @@ public:
case 'm':
Rematerialiser::run(*m_dialect, *m_ast);
break;
case 'v':
EquivalentFunctionCombiner::run(*m_ast);
break;
default:
cout << "Unknown option." << endl;
}