aboutsummaryrefslogtreecommitdiffstats
path: root/test/libjulia/yulOptimizerTests/expressionSplitter
diff options
context:
space:
mode:
authorchriseth <chris@ethereum.org>2018-10-11 21:13:42 +0800
committerchriseth <chris@ethereum.org>2018-10-12 00:41:26 +0800
commit424a77b48e0cf226ea9b8ec2c0ed42d0679a45e0 (patch)
tree87432152be383089d0f905be4cf053de5898f577 /test/libjulia/yulOptimizerTests/expressionSplitter
parent33ac415f7fd3e05727959d2fd4963910f2763ab8 (diff)
downloaddexon-solidity-424a77b48e0cf226ea9b8ec2c0ed42d0679a45e0.tar.gz
dexon-solidity-424a77b48e0cf226ea9b8ec2c0ed42d0679a45e0.tar.zst
dexon-solidity-424a77b48e0cf226ea9b8ec2c0ed42d0679a45e0.zip
Move expression splitter tests.
Diffstat (limited to 'test/libjulia/yulOptimizerTests/expressionSplitter')
-rw-r--r--test/libjulia/yulOptimizerTests/expressionSplitter/control_flow.yul33
-rw-r--r--test/libjulia/yulOptimizerTests/expressionSplitter/inside_function.yul24
-rw-r--r--test/libjulia/yulOptimizerTests/expressionSplitter/smoke.yul5
-rw-r--r--test/libjulia/yulOptimizerTests/expressionSplitter/switch.yul25
-rw-r--r--test/libjulia/yulOptimizerTests/expressionSplitter/trivial.yul11
5 files changed, 98 insertions, 0 deletions
diff --git a/test/libjulia/yulOptimizerTests/expressionSplitter/control_flow.yul b/test/libjulia/yulOptimizerTests/expressionSplitter/control_flow.yul
new file mode 100644
index 00000000..5cc5a17d
--- /dev/null
+++ b/test/libjulia/yulOptimizerTests/expressionSplitter/control_flow.yul
@@ -0,0 +1,33 @@
+{
+ let x := calldataload(0)
+ if mul(add(x, 2), 3) {
+ for { let a := 2 } lt(a, mload(a)) { a := add(a, mul(a, 2)) } {
+ let b := mul(add(a, 2), 4)
+ sstore(b, mul(b, 2))
+ }
+ }
+}
+// ----
+// expressionSplitter
+// {
+// let x := calldataload(0)
+// let _1 := add(x, 2)
+// let _2 := mul(_1, 3)
+// if _2
+// {
+// for {
+// let a := 2
+// }
+// lt(a, mload(a))
+// {
+// let _3 := mul(a, 2)
+// a := add(a, _3)
+// }
+// {
+// let _4 := add(a, 2)
+// let b := mul(_4, 4)
+// let _5 := mul(b, 2)
+// sstore(b, _5)
+// }
+// }
+// }
diff --git a/test/libjulia/yulOptimizerTests/expressionSplitter/inside_function.yul b/test/libjulia/yulOptimizerTests/expressionSplitter/inside_function.yul
new file mode 100644
index 00000000..8623f15d
--- /dev/null
+++ b/test/libjulia/yulOptimizerTests/expressionSplitter/inside_function.yul
@@ -0,0 +1,24 @@
+{
+ let x := mul(f(0, mload(7)), 3)
+ function f(a, b) -> c {
+ c := mul(a, mload(add(b, c)))
+ }
+ sstore(x, f(mload(2), mload(2)))
+}
+// ----
+// expressionSplitter
+// {
+// let _1 := mload(7)
+// let _2 := f(0, _1)
+// let x := mul(_2, 3)
+// function f(a, b) -> c
+// {
+// let _3 := add(b, c)
+// let _4 := mload(_3)
+// c := mul(a, _4)
+// }
+// let _5 := mload(2)
+// let _6 := mload(2)
+// let _7 := f(_6, _5)
+// sstore(x, _7)
+// }
diff --git a/test/libjulia/yulOptimizerTests/expressionSplitter/smoke.yul b/test/libjulia/yulOptimizerTests/expressionSplitter/smoke.yul
new file mode 100644
index 00000000..f69f60b6
--- /dev/null
+++ b/test/libjulia/yulOptimizerTests/expressionSplitter/smoke.yul
@@ -0,0 +1,5 @@
+{ }
+// ----
+// expressionSplitter
+// {
+// }
diff --git a/test/libjulia/yulOptimizerTests/expressionSplitter/switch.yul b/test/libjulia/yulOptimizerTests/expressionSplitter/switch.yul
new file mode 100644
index 00000000..bda613b7
--- /dev/null
+++ b/test/libjulia/yulOptimizerTests/expressionSplitter/switch.yul
@@ -0,0 +1,25 @@
+{
+ let x := 8
+ switch add(2, calldataload(0))
+ case 0 { sstore(0, mload(2)) }
+ default { mstore(0, mload(3)) }
+ x := add(mload(3), 4)
+}
+// ----
+// expressionSplitter
+// {
+// let x := 8
+// let _1 := calldataload(0)
+// let _2 := add(2, _1)
+// switch _2
+// case 0 {
+// let _3 := mload(2)
+// sstore(0, _3)
+// }
+// default {
+// let _4 := mload(3)
+// mstore(0, _4)
+// }
+// let _5 := mload(3)
+// x := add(_5, 4)
+// }
diff --git a/test/libjulia/yulOptimizerTests/expressionSplitter/trivial.yul b/test/libjulia/yulOptimizerTests/expressionSplitter/trivial.yul
new file mode 100644
index 00000000..632855a5
--- /dev/null
+++ b/test/libjulia/yulOptimizerTests/expressionSplitter/trivial.yul
@@ -0,0 +1,11 @@
+{
+ mstore(add(calldataload(2), mload(3)), 8)
+}
+// ----
+// expressionSplitter
+// {
+// let _1 := mload(3)
+// let _2 := calldataload(2)
+// let _3 := add(_2, _1)
+// mstore(_3, 8)
+// }