aboutsummaryrefslogtreecommitdiffstats
path: root/test
diff options
context:
space:
mode:
authorchriseth <chris@ethereum.org>2018-11-08 19:52:51 +0800
committerGitHub <noreply@github.com>2018-11-08 19:52:51 +0800
commitcd11f7cfacc88485584ebdd8fc4beccbcaf550fe (patch)
tree22817a0c53cd48efdd816dd251762399d913ff57 /test
parentb801e616118a06b4cc1f2e73a9ddecc5d585b827 (diff)
parentb2b11eaa00de3174ead7dbeb77bbc315719bd79d (diff)
downloaddexon-solidity-cd11f7cfacc88485584ebdd8fc4beccbcaf550fe.tar
dexon-solidity-cd11f7cfacc88485584ebdd8fc4beccbcaf550fe.tar.gz
dexon-solidity-cd11f7cfacc88485584ebdd8fc4beccbcaf550fe.tar.bz2
dexon-solidity-cd11f7cfacc88485584ebdd8fc4beccbcaf550fe.tar.lz
dexon-solidity-cd11f7cfacc88485584ebdd8fc4beccbcaf550fe.tar.xz
dexon-solidity-cd11f7cfacc88485584ebdd8fc4beccbcaf550fe.tar.zst
dexon-solidity-cd11f7cfacc88485584ebdd8fc4beccbcaf550fe.zip
Merge pull request #5325 from ethereum/fixDataFlow
[Yul] Fix data flow analyzer for function definitions.
Diffstat (limited to 'test')
-rw-r--r--test/libyul/yulOptimizerTests/commonSubexpressionEliminator/case2.yul52
-rw-r--r--test/libyul/yulOptimizerTests/commonSubexpressionEliminator/function_scopes.yul52
2 files changed, 104 insertions, 0 deletions
diff --git a/test/libyul/yulOptimizerTests/commonSubexpressionEliminator/case2.yul b/test/libyul/yulOptimizerTests/commonSubexpressionEliminator/case2.yul
new file mode 100644
index 00000000..fd8b4bc8
--- /dev/null
+++ b/test/libyul/yulOptimizerTests/commonSubexpressionEliminator/case2.yul
@@ -0,0 +1,52 @@
+{
+ let _13 := 0x20
+ let _14 := allocate(_13)
+ pop(_14)
+ let _15 := 2
+ let _16 := 3
+ let _17 := 0x40
+ let _18 := allocate(_17)
+ let _19 := array_index_access(_18, _16)
+ mstore(_19, _15)
+ function allocate(size) -> p
+ {
+ let _1 := 0x40
+ let p_2 := mload(_1)
+ p := p_2
+ let _20 := add(p_2, size)
+ mstore(_1, _20)
+ }
+ function array_index_access(array, index) -> p_1
+ {
+ let _21 := 0x20
+ let _22 := mul(index, _21)
+ p_1 := add(array, _22)
+ }
+}
+// ----
+// commonSubexpressionEliminator
+// {
+// let _13 := 0x20
+// let _14 := allocate(_13)
+// pop(_14)
+// let _15 := 2
+// let _16 := 3
+// let _17 := 0x40
+// let _18 := allocate(_17)
+// let _19 := array_index_access(_18, _16)
+// mstore(_19, _15)
+// function allocate(size) -> p
+// {
+// let _1 := 0x40
+// let p_2 := mload(_1)
+// p := p_2
+// let _20 := add(p_2, size)
+// mstore(_1, _20)
+// }
+// function array_index_access(array, index) -> p_1
+// {
+// let _21 := 0x20
+// let _22 := mul(index, _21)
+// p_1 := add(array, _22)
+// }
+// }
diff --git a/test/libyul/yulOptimizerTests/commonSubexpressionEliminator/function_scopes.yul b/test/libyul/yulOptimizerTests/commonSubexpressionEliminator/function_scopes.yul
new file mode 100644
index 00000000..28e840cf
--- /dev/null
+++ b/test/libyul/yulOptimizerTests/commonSubexpressionEliminator/function_scopes.yul
@@ -0,0 +1,52 @@
+{
+ function allocate(size) -> p
+ {
+ let _1 := 0x40
+ p := mload(_1)
+ let _2 := add(p, size)
+ let _3 := 0x40
+ mstore(_3, _2)
+ }
+ function array_index_access(array, index) -> p_1
+ {
+ let _4 := 0x20
+ let _5 := mul(index, _4)
+ p_1 := add(array, _5)
+ }
+ let _6 := 0x20
+ let _7 := allocate(_6)
+ pop(_7)
+ let _8 := 0x40
+ let x := allocate(_8)
+ let _9 := 2
+ let _10 := 3
+ let _11 := array_index_access(x, _10)
+ mstore(_11, _9)
+}
+// ----
+// commonSubexpressionEliminator
+// {
+// function allocate(size) -> p
+// {
+// let _1 := 0x40
+// p := mload(_1)
+// let _2 := add(p, size)
+// let _3 := _1
+// mstore(_1, _2)
+// }
+// function array_index_access(array, index) -> p_1
+// {
+// let _4 := 0x20
+// let _5 := mul(index, _4)
+// p_1 := add(array, _5)
+// }
+// let _6 := 0x20
+// let _7 := allocate(_6)
+// pop(_7)
+// let _8 := 0x40
+// let x := allocate(_8)
+// let _9 := 2
+// let _10 := 3
+// let _11 := array_index_access(x, _10)
+// mstore(_11, _9)
+// }