This commit is contained in:
chriseth 2021-04-26 18:21:00 +02:00
parent 2bf8a590f0
commit 7bed40af93
3 changed files with 41 additions and 0 deletions

View File

@ -53,6 +53,7 @@
#include <libyul/optimiser/SSATransform.h>
#include <libyul/optimiser/Semantics.h>
#include <libyul/optimiser/RedundantAssignEliminator.h>
#include <libyul/optimiser/RedundantStoreEliminator.h>
#include <libyul/optimiser/StructuralSimplifier.h>
#include <libyul/optimiser/StackCompressor.h>
#include <libyul/optimiser/Suite.h>
@ -243,6 +244,15 @@ YulOptimizerTestCommon::YulOptimizerTestCommon(
SSATransform::run(*m_context, *m_ast);
RedundantAssignEliminator::run(*m_context, *m_ast);
}},
{"redundantStoreEliminator", [&]() {
disambiguate();
ForLoopInitRewriter::run(*m_context, *m_ast);
ExpressionSplitter::run(*m_context, *m_ast);
CommonSubexpressionEliminator::run(*m_context, *m_ast);
RedundantStoreEliminator::run(*m_context, *m_ast);
UnusedPruner::run(*m_context, *m_ast);
ExpressionJoiner::run(*m_context, *m_ast);
}},
{"loadResolver", [&]() {
disambiguate();
ForLoopInitRewriter::run(*m_context, *m_ast);

View File

@ -0,0 +1,18 @@
{
sstore(0, calldataload(0))
let x := sload(0)
sstore(1, calldataload(2))
sstore(7, x)
sstore(0, calldataload(7))
}
// ----
// step: redundantStoreEliminator
//
// {
// let _1 := 0
// let x := sload(_1)
// sstore(1, calldataload(2))
// let _8 := 7
// sstore(_8, x)
// sstore(_1, calldataload(_8))
// }

View File

@ -0,0 +1,13 @@
{
sstore(0, calldataload(0))
sstore(1, calldataload(2))
sstore(0, calldataload(7))
}
// ----
// step: redundantStoreEliminator
//
// {
// let _1 := 0
// sstore(1, calldataload(2))
// sstore(_1, calldataload(7))
// }