Merge pull request #5271 from ethereum/fullSuite

[Yul] Full suite tests.
This commit is contained in:
chriseth
2018-10-25 12:44:10 +02:00
committed by GitHub
4 changed files with 197 additions and 0 deletions
+3
View File
@@ -37,6 +37,7 @@
#include <libyul/optimiser/ExpressionJoiner.h>
#include <libyul/optimiser/SSATransform.h>
#include <libyul/optimiser/RedundantAssignEliminator.h>
#include <libyul/optimiser/Suite.h>
#include <libsolidity/parsing/Scanner.h>
#include <libsolidity/inlineasm/AsmPrinter.h>
@@ -191,6 +192,8 @@ bool YulOptimizerTest::run(ostream& _stream, string const& _linePrefix, bool con
SSATransform::run(*m_ast, nameDispenser);
RedundantAssignEliminator::run(*m_ast);
}
else if (m_optimizerStep == "fullSuite")
OptimiserSuite::run(*m_ast, *m_analysisInfo);
else
{
FormattedScope(_stream, _formatted, {formatting::BOLD, formatting::RED}) << _linePrefix << "Invalid optimizer step: " << m_optimizerStep << endl;
@@ -0,0 +1,26 @@
{
function allocate(size) -> p {
p := mload(0x40)
mstore(0x40, add(p, size))
}
function array_index_access(array, index) -> p {
p := add(array, mul(index, 0x20))
}
pop(allocate(0x20))
let x := allocate(0x40)
mstore(array_index_access(x, 3), 2)
}
// ----
// fullSuite
// {
// {
// let _12 := 0x20
// let allocate__7 := 0x40
// let allocate_p_2 := mload(allocate__7)
// mstore(allocate__7, add(allocate_p_2, _12))
// pop(allocate_p_2)
// let allocate_p_2_1 := mload(allocate__7)
// mstore(allocate__7, add(allocate_p_2_1, allocate__7))
// mstore(add(allocate_p_2_1, 96), 2)
// }
// }