mirror of
https://github.com/ethereum/solidity
synced 2023-10-03 13:03:40 +00:00
Equal store eliminator.
This commit is contained in:
@@ -28,6 +28,7 @@
|
||||
#include <libyul/optimiser/ConditionalUnsimplifier.h>
|
||||
#include <libyul/optimiser/ConditionalSimplifier.h>
|
||||
#include <libyul/optimiser/CommonSubexpressionEliminator.h>
|
||||
#include <libyul/optimiser/EqualStoreEliminator.h>
|
||||
#include <libyul/optimiser/EquivalentFunctionCombiner.h>
|
||||
#include <libyul/optimiser/ExpressionSplitter.h>
|
||||
#include <libyul/optimiser/FunctionGrouper.h>
|
||||
@@ -236,6 +237,11 @@ YulOptimizerTestCommon::YulOptimizerTestCommon(
|
||||
ForLoopInitRewriter::run(*m_context, *m_ast);
|
||||
UnusedAssignEliminator::run(*m_context, *m_ast);
|
||||
}},
|
||||
{"equalStoreEliminator", [&]() {
|
||||
disambiguate();
|
||||
ForLoopInitRewriter::run(*m_context, *m_ast);
|
||||
EqualStoreEliminator::run(*m_context, *m_ast);
|
||||
}},
|
||||
{"ssaPlusCleanup", [&]() {
|
||||
disambiguate();
|
||||
ForLoopInitRewriter::run(*m_context, *m_ast);
|
||||
|
||||
@@ -0,0 +1,31 @@
|
||||
{
|
||||
let var_k := calldataload(0)
|
||||
let _1 := 0x00
|
||||
let _2 := 0x20
|
||||
mstore(_1, var_k)
|
||||
mstore(_2, _1)
|
||||
sstore(keccak256(_1, 0x40), 0x01)
|
||||
mstore(_1, var_k)
|
||||
mstore(_2, _1)
|
||||
sstore(add(keccak256(_1, 0x40), 0x01), 0x03)
|
||||
mstore(_1, var_k)
|
||||
mstore(_2, _1)
|
||||
sstore(add(keccak256(_1, 0x40), 2), 0x04)
|
||||
mstore(_1, var_k)
|
||||
mstore(_2, _1)
|
||||
sstore(add(keccak256(_1, 0x40), 0x03), 2)
|
||||
}
|
||||
// ----
|
||||
// step: equalStoreEliminator
|
||||
//
|
||||
// {
|
||||
// let var_k := calldataload(0)
|
||||
// let _1 := 0x00
|
||||
// let _2 := 0x20
|
||||
// mstore(_1, var_k)
|
||||
// mstore(_2, _1)
|
||||
// sstore(keccak256(_1, 0x40), 0x01)
|
||||
// sstore(add(keccak256(_1, 0x40), 0x01), 0x03)
|
||||
// sstore(add(keccak256(_1, 0x40), 2), 0x04)
|
||||
// sstore(add(keccak256(_1, 0x40), 0x03), 2)
|
||||
// }
|
||||
@@ -138,7 +138,7 @@ BOOST_AUTO_TEST_CASE(output_operator_should_create_concise_and_unambiguous_strin
|
||||
|
||||
BOOST_TEST(chromosome.length() == allSteps.size());
|
||||
BOOST_TEST(chromosome.optimisationSteps() == allSteps);
|
||||
BOOST_TEST(toString(chromosome) == "flcCUnDvejsxIOoighFTLMRmVatrpud");
|
||||
BOOST_TEST(toString(chromosome) == "flcCUnDEvejsxIOoighFTLMRrmVatpud");
|
||||
}
|
||||
|
||||
BOOST_AUTO_TEST_CASE(optimisationSteps_should_translate_chromosomes_genes_to_optimisation_step_names)
|
||||
|
||||
Reference in New Issue
Block a user