aboutsummaryrefslogtreecommitdiffstats
path: root/test
diff options
context:
space:
mode:
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)
+// }
+// }