aboutsummaryrefslogtreecommitdiffstats
path: root/test/libyul/objectCompiler
diff options
context:
space:
mode:
authorchriseth <chris@ethereum.org>2018-12-05 19:02:49 +0800
committerchriseth <chris@ethereum.org>2018-12-06 21:43:14 +0800
commitb7cfa499b0bd674b59284821e33349726cbc4299 (patch)
treeb008fb966c8371a47d6610aa4c40ac8afe87ff19 /test/libyul/objectCompiler
parent3fc118ba21ea2731dff951e65bd103ef5c59b8fd (diff)
downloaddexon-solidity-b7cfa499b0bd674b59284821e33349726cbc4299.tar.gz
dexon-solidity-b7cfa499b0bd674b59284821e33349726cbc4299.tar.zst
dexon-solidity-b7cfa499b0bd674b59284821e33349726cbc4299.zip
Add tests.
Diffstat (limited to 'test/libyul/objectCompiler')
-rw-r--r--test/libyul/objectCompiler/data.yul11
-rw-r--r--test/libyul/objectCompiler/namedObject.yul6
-rw-r--r--test/libyul/objectCompiler/namedObjectCode.yul13
-rw-r--r--test/libyul/objectCompiler/nested_optimizer.yul49
-rw-r--r--test/libyul/objectCompiler/simple.yul13
-rw-r--r--test/libyul/objectCompiler/simple_optimizer.yul23
-rw-r--r--test/libyul/objectCompiler/smoke.yul5
-rw-r--r--test/libyul/objectCompiler/subObject.yul21
-rw-r--r--test/libyul/objectCompiler/subSubObject.yul39
9 files changed, 180 insertions, 0 deletions
diff --git a/test/libyul/objectCompiler/data.yul b/test/libyul/objectCompiler/data.yul
new file mode 100644
index 00000000..daa22d21
--- /dev/null
+++ b/test/libyul/objectCompiler/data.yul
@@ -0,0 +1,11 @@
+object "a" {
+ code {}
+ // Unreferenced data is not added to the assembled bytecode.
+ data "str" "Hello, World!"
+}
+// ----
+// Assembly:
+// stop
+// data_acaf3289d7b601cbd114fb36c4d29c85bbfd5e133f14cb355c3fd8d99367964f 48656c6c6f2c20576f726c6421
+// Bytecode: fe
+// Opcodes: INVALID
diff --git a/test/libyul/objectCompiler/namedObject.yul b/test/libyul/objectCompiler/namedObject.yul
new file mode 100644
index 00000000..940160fd
--- /dev/null
+++ b/test/libyul/objectCompiler/namedObject.yul
@@ -0,0 +1,6 @@
+object "a" {
+ code {}
+}
+// ----
+// Assembly:
+// -- empty bytecode --
diff --git a/test/libyul/objectCompiler/namedObjectCode.yul b/test/libyul/objectCompiler/namedObjectCode.yul
new file mode 100644
index 00000000..4fc6891c
--- /dev/null
+++ b/test/libyul/objectCompiler/namedObjectCode.yul
@@ -0,0 +1,13 @@
+object "a" {
+ code { sstore(0, 1) }
+}
+// ----
+// Assembly:
+// /* "source":32:33 */
+// 0x01
+// /* "source":29:30 */
+// 0x00
+// /* "source":22:34 */
+// sstore
+// Bytecode: 6001600055
+// Opcodes: PUSH1 0x1 PUSH1 0x0 SSTORE
diff --git a/test/libyul/objectCompiler/nested_optimizer.yul b/test/libyul/objectCompiler/nested_optimizer.yul
new file mode 100644
index 00000000..7739ce61
--- /dev/null
+++ b/test/libyul/objectCompiler/nested_optimizer.yul
@@ -0,0 +1,49 @@
+// optimize
+object "a" {
+ code {
+ let x := calldataload(0)
+ let y := calldataload(0)
+ let z := sub(y, x)
+ sstore(add(x, 0), z)
+ }
+ object "sub" {
+ code {
+ let x := calldataload(0)
+ let y := calldataload(0)
+ let z := sub(y, x)
+ sstore(add(x, 0), z)
+ }
+ }
+}
+// ----
+// Assembly:
+// /* "source":60:61 */
+// 0x00
+// /* "source":137:138 */
+// dup1
+// /* "source":60:61 */
+// dup2
+// /* "source":47:62 */
+// calldataload
+// /* "source":119:139 */
+// sstore
+// /* "source":32:143 */
+// pop
+// stop
+//
+// sub_0: assembly {
+// /* "source":200:201 */
+// 0x00
+// /* "source":283:284 */
+// dup1
+// /* "source":200:201 */
+// dup2
+// /* "source":187:202 */
+// calldataload
+// /* "source":265:285 */
+// sstore
+// /* "source":170:291 */
+// pop
+// }
+// Bytecode: 60008081355550fe
+// Opcodes: PUSH1 0x0 DUP1 DUP2 CALLDATALOAD SSTORE POP INVALID
diff --git a/test/libyul/objectCompiler/simple.yul b/test/libyul/objectCompiler/simple.yul
new file mode 100644
index 00000000..d41b527c
--- /dev/null
+++ b/test/libyul/objectCompiler/simple.yul
@@ -0,0 +1,13 @@
+{
+ sstore(0, 1)
+}
+// ----
+// Assembly:
+// /* "source":14:15 */
+// 0x01
+// /* "source":11:12 */
+// 0x00
+// /* "source":4:16 */
+// sstore
+// Bytecode: 6001600055
+// Opcodes: PUSH1 0x1 PUSH1 0x0 SSTORE
diff --git a/test/libyul/objectCompiler/simple_optimizer.yul b/test/libyul/objectCompiler/simple_optimizer.yul
new file mode 100644
index 00000000..43b33553
--- /dev/null
+++ b/test/libyul/objectCompiler/simple_optimizer.yul
@@ -0,0 +1,23 @@
+// optimize
+{
+ let x := calldataload(0)
+ let y := calldataload(0)
+ let z := sub(y, x)
+ sstore(add(x, 0), z)
+}
+// ----
+// Assembly:
+// /* "source":38:39 */
+// 0x00
+// /* "source":109:110 */
+// dup1
+// /* "source":38:39 */
+// dup2
+// /* "source":25:40 */
+// calldataload
+// /* "source":91:111 */
+// sstore
+// /* "source":12:113 */
+// pop
+// Bytecode: 60008081355550
+// Opcodes: PUSH1 0x0 DUP1 DUP2 CALLDATALOAD SSTORE POP
diff --git a/test/libyul/objectCompiler/smoke.yul b/test/libyul/objectCompiler/smoke.yul
new file mode 100644
index 00000000..b2e44d4d
--- /dev/null
+++ b/test/libyul/objectCompiler/smoke.yul
@@ -0,0 +1,5 @@
+{
+}
+// ----
+// Assembly:
+// -- empty bytecode --
diff --git a/test/libyul/objectCompiler/subObject.yul b/test/libyul/objectCompiler/subObject.yul
new file mode 100644
index 00000000..98ea4d07
--- /dev/null
+++ b/test/libyul/objectCompiler/subObject.yul
@@ -0,0 +1,21 @@
+object "a" {
+ code {}
+ // Unreferenced data is not added to the assembled bytecode.
+ data "str" "Hello, World!"
+ object "sub" { code { sstore(0, 1) } }
+}
+// ----
+// Assembly:
+// stop
+// data_acaf3289d7b601cbd114fb36c4d29c85bbfd5e133f14cb355c3fd8d99367964f 48656c6c6f2c20576f726c6421
+//
+// sub_0: assembly {
+// /* "source":149:150 */
+// 0x01
+// /* "source":146:147 */
+// 0x00
+// /* "source":139:151 */
+// sstore
+// }
+// Bytecode: fe
+// Opcodes: INVALID
diff --git a/test/libyul/objectCompiler/subSubObject.yul b/test/libyul/objectCompiler/subSubObject.yul
new file mode 100644
index 00000000..5e01f6dd
--- /dev/null
+++ b/test/libyul/objectCompiler/subSubObject.yul
@@ -0,0 +1,39 @@
+object "a" {
+ code {}
+ // Unreferenced data is not added to the assembled bytecode.
+ data "str" "Hello, World!"
+ object "sub" {
+ code { sstore(0, 1) }
+ object "subsub" {
+ code { sstore(2, 3) }
+ data "str" hex"123456"
+ }
+ }
+}
+// ----
+// Assembly:
+// stop
+// data_acaf3289d7b601cbd114fb36c4d29c85bbfd5e133f14cb355c3fd8d99367964f 48656c6c6f2c20576f726c6421
+//
+// sub_0: assembly {
+// /* "source":153:154 */
+// 0x01
+// /* "source":150:151 */
+// 0x00
+// /* "source":143:155 */
+// sstore
+// stop
+//
+// sub_0: assembly {
+// /* "source":203:204 */
+// 0x03
+// /* "source":200:201 */
+// 0x02
+// /* "source":193:205 */
+// sstore
+// stop
+// data_6adf031833174bbe4c85eafe59ddb54e6584648c2c962c6f94791ab49caa0ad4 123456
+// }
+// }
+// Bytecode: fe
+// Opcodes: INVALID