aboutsummaryrefslogtreecommitdiffstats
path: root/test
diff options
context:
space:
mode:
authorchriseth <chris@ethereum.org>2018-10-25 18:44:10 +0800
committerGitHub <noreply@github.com>2018-10-25 18:44:10 +0800
commit4076875927b279342dacf690f86bfc16af03dd67 (patch)
tree29d592e819b39940aaef1029ef9d60f06be950cb /test
parentd33553989138ae72abab86be015869d04698d318 (diff)
parent60f1d52f592b26f7b5b2b1a063f40c3e2f0a0561 (diff)
downloaddexon-solidity-4076875927b279342dacf690f86bfc16af03dd67.tar.gz
dexon-solidity-4076875927b279342dacf690f86bfc16af03dd67.tar.zst
dexon-solidity-4076875927b279342dacf690f86bfc16af03dd67.zip
Merge pull request #5271 from ethereum/fullSuite
[Yul] Full suite tests.
Diffstat (limited to 'test')
-rw-r--r--test/libyul/YulOptimizerTest.cpp3
-rw-r--r--test/libyul/yulOptimizerTests/fullSuite/medium.yul26
2 files changed, 29 insertions, 0 deletions
diff --git a/test/libyul/YulOptimizerTest.cpp b/test/libyul/YulOptimizerTest.cpp
index 67715ac1..0378764d 100644
--- a/test/libyul/YulOptimizerTest.cpp
+++ b/test/libyul/YulOptimizerTest.cpp
@@ -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;
diff --git a/test/libyul/yulOptimizerTests/fullSuite/medium.yul b/test/libyul/yulOptimizerTests/fullSuite/medium.yul
new file mode 100644
index 00000000..45cc555d
--- /dev/null
+++ b/test/libyul/yulOptimizerTests/fullSuite/medium.yul
@@ -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)
+// }
+// }