Update code transform tests.

This commit is contained in:
Daniel Kirchner 2021-08-13 00:22:48 +02:00
parent 978b540cae
commit 07cc0981b7
42 changed files with 797 additions and 734 deletions

View File

@ -20,6 +20,9 @@
#include <test/libyul/Common.h> #include <test/libyul/Common.h>
#include <libyul/AssemblyStack.h> #include <libyul/AssemblyStack.h>
#include <libyul/backends/evm/EthAssemblyAdapter.h>
#include <libevmasm/Assembly.h>
#include <liblangutil/SourceReferenceFormatter.h> #include <liblangutil/SourceReferenceFormatter.h>
@ -56,7 +59,13 @@ TestCase::TestResult EVMCodeTransformTest::run(ostream& _stream, string const& _
return TestResult::FatalError; return TestResult::FatalError;
} }
m_obtainedResult = evmasm::disassemble(stack.assemble(AssemblyStack::Machine::EVM).bytecode->bytecode, "\n"); evmasm::Assembly assembly;
EthAssemblyAdapter adapter(assembly);
stack.compileEVM(adapter, m_stackOpt);
std::ostringstream output;
output << assembly;
m_obtainedResult = output.str();
return checkResult(_stream, _linePrefix, _formatted); return checkResult(_stream, _linePrefix, _formatted);
} }

View File

@ -2,18 +2,9 @@
// ==== // ====
// stackOptimization: true // stackOptimization: true
// ---- // ----
// PUSH1 0x0 // /* "":17:18 */
// POP // pop(0x00)
// JUMPDEST // tag_1:
// PUSH1 0x1 // /* "":38:39 */
// ISZERO // pop(0x03)
// PUSH1 0x11 // jump(tag_1)
// JUMPI
// PUSH1 0x3
// POP
// JUMPDEST
// PUSH1 0x3
// JUMP
// JUMPDEST
// PUSH1 0x2
// POP

View File

@ -2,21 +2,11 @@
// ==== // ====
// stackOptimization: true // stackOptimization: true
// ---- // ----
// PUSH1 0x0 // /* "":17:18 */
// JUMPDEST // pop(0x00)
// PUSH1 0x1 // tag_1:
// ISZERO // /* "":34:35 */
// PUSH1 0x14 // pop(0x08)
// JUMPI // /* "":45:46 */
// PUSH1 0x8 // pop(0x03)
// SWAP1 // jump(tag_1)
// POP
// PUSH1 0x3
// POP
// JUMPDEST
// PUSH1 0x2
// JUMP
// JUMPDEST
// POP
// PUSH1 0x2
// POP

View File

@ -4,25 +4,22 @@
// ==== // ====
// stackOptimization: true // stackOptimization: true
// ---- // ----
// PUSH1 0x17 // stop
// JUMP // /* "":6:86 */
// JUMPDEST // tag_1:
// ADDRESS // swap2
// POP // swap1
// DUP3 // swap2
// DUP2 // /* "":37:46 */
// SSTORE // address
// POP // /* "":33:47 */
// CALLVALUE // pop
// POP // /* "":48:60 */
// PUSH1 0x0 // sstore
// DUP2 // /* "":65:76 */
// SWAP1 // callvalue
// POP // /* "":61:77 */
// JUMPDEST // pop
// SWAP3 // swap1
// SWAP2 // /* "":6:86 */
// POP // jump // out
// POP
// JUMP
// JUMPDEST

View File

@ -7,23 +7,26 @@
// ==== // ====
// stackOptimization: true // stackOptimization: true
// ---- // ----
// PUSH1 0x17 // stop
// JUMP // /* "":4:86 */
// JUMPDEST // tag_1:
// DUP1 // /* "":34:38 */
// PUSH1 0x80 // 0x80
// MSTORE // /* "":27:42 */
// POP // mstore
// PUSH1 0x0 // /* "":63:64 */
// CALLDATALOAD // 0x00
// ISZERO // /* "":50:65 */
// PUSH1 0x13 // calldataload
// JUMPI // tag_2
// DUP1 // jumpi
// DUP2 // tag_3:
// SSTORE // pop
// JUMPDEST // /* "":4:86 */
// POP // jump // out
// JUMPDEST // tag_2:
// JUMP // dup1
// JUMPDEST // /* "":68:80 */
// sstore
// pc
// jump(tag_3)

View File

@ -6,28 +6,30 @@
// ==== // ====
// stackOptimization: true // stackOptimization: true
// ---- // ----
// PUSH1 0x9 // tag_1
// PUSH1 0x2 // /* "":20:21 */
// PUSH1 0x1 // 0x02
// PUSH1 0xD // /* "":17:18 */
// JUMP // 0x01
// JUMPDEST // /* "":15:22 */
// PUSH1 0x15 // tag_2
// JUMP // jump // in
// JUMPDEST // tag_1:
// POP // pop
// POP // tag_3
// PUSH1 0x0 // /* "":67:68 */
// JUMPDEST // 0x04
// SWAP1 // /* "":64:65 */
// JUMP // 0x03
// JUMPDEST // /* "":62:69 */
// PUSH1 0x1F // tag_2
// PUSH1 0x4 // jump // in
// PUSH1 0x3 // tag_3:
// PUSH1 0xD // stop
// JUMP // /* "":27:52 */
// JUMPDEST // tag_2:
// SWAP1 // pop
// POP // pop
// POP // 0x00
// swap1
// jump // out

View File

@ -25,92 +25,85 @@
// ==== // ====
// stackOptimization: true // stackOptimization: true
// ---- // ----
// PUSH1 0x80 // stop
// JUMP // /* "":6:660 */
// JUMPDEST // tag_1:
// DUP1 // /* "":130:136 */
// PUSH2 0x100 // 0x0100
// MSTORE // /* "":123:141 */
// POP // mstore
// DUP1 // /* "":157:163 */
// PUSH2 0x120 // 0x0120
// MSTORE // /* "":150:168 */
// POP // mstore
// DUP1 // /* "":184:190 */
// PUSH2 0x140 // 0x0140
// MSTORE // /* "":177:195 */
// POP // mstore
// DUP1 // /* "":211:217 */
// PUSH2 0x160 // 0x0160
// MSTORE // /* "":204:222 */
// POP // mstore
// DUP1 // /* "":238:244 */
// PUSH2 0x180 // 0x0180
// MSTORE // /* "":231:249 */
// POP // mstore
// DUP1 // /* "":265:271 */
// PUSH2 0x1A0 // 0x01a0
// MSTORE // /* "":258:276 */
// POP // mstore
// DUP1 // /* "":292:298 */
// PUSH2 0x1C0 // 0x01c0
// MSTORE // /* "":285:303 */
// POP // mstore
// DUP1 // /* "":319:325 */
// PUSH2 0x1E0 // 0x01e0
// MSTORE // /* "":312:330 */
// POP // mstore
// DUP1 // /* "":346:352 */
// PUSH2 0x200 // 0x0200
// MSTORE // /* "":339:357 */
// POP // mstore
// DUP1 // /* "":373:379 */
// PUSH2 0x220 // 0x0220
// MSTORE // /* "":366:385 */
// POP // mstore
// DUP1 // /* "":401:407 */
// PUSH2 0x240 // 0x0240
// MSTORE // /* "":394:413 */
// POP // mstore
// DUP1 // /* "":429:435 */
// PUSH2 0x260 // 0x0260
// MSTORE // /* "":422:441 */
// POP // mstore
// DUP1 // /* "":457:463 */
// PUSH2 0x280 // 0x0280
// MSTORE // /* "":450:469 */
// POP // mstore
// DUP1 // /* "":485:491 */
// PUSH2 0x2A0 // 0x02a0
// MSTORE // /* "":478:497 */
// POP // mstore
// DUP1 // /* "":513:519 */
// PUSH2 0x2C0 // 0x02c0
// MSTORE // /* "":506:525 */
// POP // mstore
// DUP1 // /* "":541:547 */
// PUSH2 0x2E0 // 0x02e0
// MSTORE // /* "":534:553 */
// POP // mstore
// DUP1 // /* "":569:575 */
// PUSH2 0x300 // 0x0300
// MSTORE // /* "":562:581 */
// POP // mstore
// DUP1 // /* "":597:603 */
// PUSH2 0x320 // 0x0320
// MSTORE // /* "":590:609 */
// POP // mstore
// DUP1 // /* "":625:631 */
// PUSH2 0x340 // 0x0340
// MSTORE // /* "":618:637 */
// POP // mstore
// PUSH1 0x0 // swap1
// DUP2 // /* "":6:660 */
// SWAP1 // jump // out
// POP
// JUMPDEST
// SWAP2
// SWAP1
// POP
// JUMP
// JUMPDEST

View File

@ -4,11 +4,9 @@
// ==== // ====
// stackOptimization: true // stackOptimization: true
// ---- // ----
// PUSH1 0x8 // stop
// JUMP // /* "":6:26 */
// JUMPDEST // tag_1:
// POP // pop
// POP // pop
// JUMPDEST // jump // out
// JUMP
// JUMPDEST

View File

@ -8,17 +8,14 @@
// ==== // ====
// stackOptimization: true // stackOptimization: true
// ---- // ----
// PUSH1 0x10 // stop
// JUMP // /* "":218:252 */
// JUMPDEST // tag_1:
// POP // pop
// POP // pop
// POP // pop
// POP // pop
// PUSH1 0x0 // 0x00
// PUSH1 0x0 // 0x00
// JUMPDEST // swap2
// SWAP1 // jump // out
// SWAP2
// JUMP
// JUMPDEST

View File

@ -4,28 +4,25 @@
// ==== // ====
// stackOptimization: true // stackOptimization: true
// ---- // ----
// PUSH1 0x1E // stop
// JUMP // /* "":6:78 */
// JUMPDEST // tag_1:
// POP // pop
// PUSH1 0x3 // pop
// SWAP1 // pop
// POP // pop
// POP // 0x00
// POP // swap1
// POP // /* "":44:45 */
// PUSH1 0x0 // pop(0x03)
// PUSH1 0x0 // /* "":55:56 */
// PUSH1 0x9 // 0x09
// PUSH1 0x2 // swap1
// SWAP2 // /* "":62:63 */
// POP // 0x02
// DUP2 // dup1
// DUP2 // swap3
// MSTORE // /* "":64:76 */
// POP // mstore
// JUMPDEST // /* "":6:78 */
// SWAP1 // jump // out
// SWAP2
// JUMP
// JUMPDEST

View File

@ -4,13 +4,10 @@
// ==== // ====
// stackOptimization: true // stackOptimization: true
// ---- // ----
// PUSH1 0xC // stop
// JUMP // /* "":6:30 */
// JUMPDEST // tag_1:
// PUSH1 0x0 // 0x00
// PUSH1 0x0 // 0x00
// JUMPDEST // swap2
// SWAP1 // jump // out
// SWAP2
// JUMP
// JUMPDEST

View File

@ -4,15 +4,18 @@
// ==== // ====
// stackOptimization: true // stackOptimization: true
// ---- // ----
// PUSH1 0xD // stop
// JUMP // /* "":6:63 */
// JUMPDEST // tag_1:
// ADDRESS // 0x00
// POP // swap1
// PUSH1 0x0 // /* "":30:39 */
// CALLVALUE // address
// POP // /* "":26:40 */
// JUMPDEST // pop
// SWAP1 // /* "":47:58 */
// JUMP // callvalue
// JUMPDEST // /* "":43:59 */
// pop
// /* "":6:63 */
// jump // out

View File

@ -4,15 +4,16 @@
// ==== // ====
// stackOptimization: true // stackOptimization: true
// ---- // ----
// PUSH1 0xD // stop
// JUMP // /* "":6:63 */
// JUMPDEST // tag_1:
// ADDRESS // 0x00
// POP // swap1
// PUSH1 0x0 // /* "":30:39 */
// CALLVALUE // address
// POP // /* "":26:40 */
// JUMPDEST // pop
// SWAP1 // /* "":50:61 */
// JUMP // pop(callvalue)
// JUMPDEST // /* "":6:63 */
// jump // out

View File

@ -4,24 +4,18 @@
// ==== // ====
// stackOptimization: true // stackOptimization: true
// ---- // ----
// PUSH1 0x19 // stop
// JUMP // /* "":6:76 */
// JUMPDEST // tag_1:
// ADDRESS // 0x00
// POP // swap1
// PUSH1 0x0 // /* "":30:39 */
// CALLVALUE // address
// POP // /* "":26:40 */
// JUMPDEST // pop
// PUSH1 0x0 // /* "":51:62 */
// ISZERO // callvalue
// PUSH1 0x15 // /* "":47:63 */
// JUMPI // pop
// JUMPDEST // /* "":6:76 */
// PUSH1 0xA // jump // out
// JUMP
// JUMPDEST
// JUMPDEST
// SWAP1
// JUMP
// JUMPDEST

View File

@ -4,20 +4,25 @@
// ==== // ====
// stackOptimization: true // stackOptimization: true
// ---- // ----
// PUSH1 0x14 // stop
// JUMP // /* "":6:68 */
// JUMPDEST // tag_1:
// ADDRESS // 0x00
// POP // swap1
// PUSH1 0x0 // /* "":44:45 */
// PUSH1 0x1 // 0x01
// ISZERO // /* "":30:39 */
// PUSH1 0x10 // address
// JUMPI // /* "":26:40 */
// CALLVALUE // pop
// POP // tag_2
// JUMPDEST // jumpi
// JUMPDEST // tag_3:
// SWAP1 // /* "":6:68 */
// JUMP // jump // out
// JUMPDEST // tag_2:
// /* "":52:63 */
// callvalue
// /* "":48:64 */
// pop
// jump(tag_3)

View File

@ -4,17 +4,14 @@
// ==== // ====
// stackOptimization: true // stackOptimization: true
// ---- // ----
// PUSH1 0x10 // stop
// JUMP // /* "":6:65 */
// JUMPDEST // tag_1:
// ADDRESS // 0x00
// POP // swap1
// PUSH1 0x0 // /* "":30:39 */
// PUSH1 0xD // address
// JUMP // /* "":26:40 */
// CALLVALUE // pop
// POP // /* "":6:65 */
// JUMPDEST // jump // out
// SWAP1
// JUMP
// JUMPDEST

View File

@ -4,18 +4,23 @@
// ==== // ====
// stackOptimization: true // stackOptimization: true
// ---- // ----
// PUSH1 0x11 // stop
// JUMP // /* "":6:72 */
// JUMPDEST // tag_1:
// ADDRESS // 0x00
// POP // swap1
// PUSH1 0x0 // /* "":30:39 */
// DUP1 // address
// PUSH1 0x0 // /* "":26:40 */
// SSTORE // pop
// CALLVALUE // dup2
// POP // /* "":48:49 */
// JUMPDEST // 0x00
// SWAP1 // /* "":41:53 */
// JUMP // sstore
// JUMPDEST // /* "":58:69 */
// callvalue
// /* "":54:70 */
// pop
// /* "":6:72 */
// jump // out

View File

@ -4,13 +4,14 @@
// ==== // ====
// stackOptimization: true // stackOptimization: true
// ---- // ----
// PUSH1 0xB // stop
// JUMP // /* "":6:44 */
// JUMPDEST // tag_1:
// CALLVALUE // 0x00
// POP // swap1
// PUSH1 0x0 // /* "":30:41 */
// JUMPDEST // callvalue
// SWAP1 // /* "":26:42 */
// JUMP // pop
// JUMPDEST // /* "":6:44 */
// jump // out

View File

@ -4,17 +4,16 @@
// ==== // ====
// stackOptimization: true // stackOptimization: true
// ---- // ----
// PUSH1 0x11 // stop
// JUMP // /* "":6:50 */
// JUMPDEST // tag_1:
// CALLVALUE // 0x00
// POP // 0x00
// PUSH1 0x0 // 0x00
// PUSH1 0x0 // swap3
// PUSH1 0x0 // /* "":36:47 */
// JUMPDEST // callvalue
// SWAP1 // /* "":32:48 */
// SWAP2 // pop
// SWAP3 // /* "":6:50 */
// JUMP // jump // out
// JUMPDEST

View File

@ -4,9 +4,7 @@
// ==== // ====
// stackOptimization: true // stackOptimization: true
// ---- // ----
// PUSH1 0x6 // stop
// JUMP // /* "":4:20 */
// JUMPDEST // tag_1:
// JUMPDEST // jump // out
// JUMP
// JUMPDEST

View File

@ -9,27 +9,18 @@
// ==== // ====
// stackOptimization: true // stackOptimization: true
// ---- // ----
// PUSH1 0x3 // /* "":15:16 */
// PUSH1 0x17 // pop(0x03)
// JUMP // /* "":182:183 */
// JUMPDEST // 0x07
// PUSH1 0x0 // stop
// DUP2 // /* "":21:172 */
// POP // tag_1:
// PUSH1 0x3 // swap1
// SWAP2 // pop
// POP // pop
// DUP2 // /* "":158:159 */
// SWAP1 // 0x03
// POP // swap1
// JUMPDEST // /* "":21:172 */
// SWAP3 // jump // out
// SWAP2
// POP
// POP
// JUMP
// JUMPDEST
// PUSH1 0x7
// SWAP1
// POP
// POP

View File

@ -10,51 +10,53 @@
// ==== // ====
// stackOptimization: true // stackOptimization: true
// ---- // ----
// PUSH1 0x14 // tag_1
// JUMP // /* "":79:80 */
// JUMPDEST // 0x02
// POP // /* "":76:77 */
// POP // 0x01
// PUSH1 0x0 // /* "":74:81 */
// JUMPDEST // tag_2
// SWAP1 // jump // in
// JUMP // tag_1:
// JUMPDEST // pop
// PUSH1 0x0 // tag_3
// PUSH1 0x0 // /* "":96:97 */
// JUMPDEST // 0x04
// SWAP1 // /* "":93:94 */
// SWAP2 // 0x03
// JUMP // /* "":91:98 */
// JUMPDEST // tag_2
// PUSH1 0x1E // jump // in
// PUSH1 0x2 // tag_3:
// PUSH1 0x1 // pop
// PUSH1 0x3 // tag_4
// JUMP // /* "":115:118 */
// JUMPDEST // tag_5
// PUSH1 0x28 // jump // in
// PUSH1 0x4 // tag_4:
// PUSH1 0x3 // pop
// PUSH1 0x3 // pop
// JUMP // tag_6
// JUMPDEST // /* "":131:134 */
// SWAP1 // tag_5
// POP // jump // in
// POP // tag_6:
// PUSH1 0x31 // pop
// PUSH1 0xB // pop
// JUMP // /* "":153:154 */
// JUMPDEST // 0x07
// PUSH1 0x37 // stop
// PUSH1 0xB // /* "":6:31 */
// JUMP // tag_2:
// JUMPDEST // pop
// SWAP2 // pop
// POP // 0x00
// SWAP2 // swap1
// POP // jump // out
// POP // /* "":36:60 */
// POP // tag_5:
// PUSH1 0x7 // 0x00
// POP // 0x00
// swap2
// jump // out

View File

@ -3,15 +3,17 @@
// ==== // ====
// stackOptimization: true // stackOptimization: true
// ---- // ----
// PUSH1 0x0 // /* "":72:73 */
// MLOAD // 0x00
// DUP1 // /* "":66:74 */
// ISZERO // mload
// PUSH1 0xA // dup1
// JUMPI // tag_1
// DUP1 // jumpi
// POP // tag_2:
// JUMPDEST // pop
// POP // /* "":104:105 */
// PUSH1 0x3 // 0x03
// POP // stop
// tag_1:
// jump(tag_2)

View File

@ -2,9 +2,10 @@
// ==== // ====
// stackOptimization: true // stackOptimization: true
// ---- // ----
// PUSH1 0x0 // /* "":11:12 */
// DUP1 // 0x00
// POP // /* "":15:21 */
// POP // pop
// PUSH1 0x1 // /* "":33:34 */
// POP // 0x01
// stop

View File

@ -2,22 +2,17 @@
// ==== // ====
// stackOptimization: true // stackOptimization: true
// ---- // ----
// PUSH1 0x0 // /* "":17:18 */
// MLOAD // 0x00
// PUSH1 0x1 // /* "":11:19 */
// PUSH1 0x6 // mload
// SWAP1 // pop
// POP // /* "":31:32 */
// DUP1 // pop(0x01)
// SWAP2 // /* "":38:39 */
// POP // pop(0x06)
// POP // /* "":60:61 */
// PUSH1 0x2 // pop(0x02)
// DUP1 // /* "":74:75 */
// SWAP2 // 0x04
// POP // stop
// PUSH1 0x4
// SWAP1
// POP
// POP
// POP

View File

@ -2,13 +2,12 @@
// ==== // ====
// stackOptimization: true // stackOptimization: true
// ---- // ----
// PUSH1 0x1 // /* "":11:12 */
// PUSH1 0x6 // pop(0x01)
// SWAP1 // /* "":18:19 */
// POP // pop(0x06)
// POP // /* "":29:30 */
// PUSH1 0x2 // pop(0x02)
// PUSH1 0x4 // /* "":36:37 */
// SWAP1 // 0x04
// POP // stop
// POP

View File

@ -2,13 +2,12 @@
// ==== // ====
// stackOptimization: true // stackOptimization: true
// ---- // ----
// PUSH1 0x1 // /* "":11:12 */
// PUSH1 0x6 // pop(0x01)
// SWAP1 // /* "":18:19 */
// POP // pop(0x06)
// POP // /* "":31:32 */
// PUSH1 0x2 // pop(0x02)
// PUSH1 0x4 // /* "":38:39 */
// SWAP1 // 0x04
// POP // stop
// POP

View File

@ -8,10 +8,9 @@
// ==== // ====
// stackOptimization: true // stackOptimization: true
// ---- // ----
// PUSH1 0x5 // /* "":15:16 */
// DUP1 // 0x05
// DUP1 // dup1
// DUP2 // /* "":126:138 */
// SSTORE // sstore
// POP // stop
// POP

View File

@ -6,11 +6,9 @@
// ==== // ====
// stackOptimization: true // stackOptimization: true
// ---- // ----
// PUSH1 0x5 // /* "":15:16 */
// DUP1 // 0x05
// SWAP1 // dup1
// POP // /* "":74:86 */
// DUP1 // sstore
// DUP2 // stop
// SSTORE
// POP

View File

@ -6,13 +6,13 @@
// ==== // ====
// stackOptimization: true // stackOptimization: true
// ---- // ----
// PUSH1 0x5 // /* "":37:38 */
// PUSH1 0x2 // 0x02
// DUP2 // /* "":15:16 */
// ADD // 0x05
// SWAP1 // /* "":30:39 */
// POP // add
// DUP1 // dup1
// DUP2 // /* "":82:94 */
// SSTORE // sstore
// POP // stop

View File

@ -6,10 +6,9 @@
// ==== // ====
// stackOptimization: true // stackOptimization: true
// ---- // ----
// PUSH1 0x5 // /* "":15:16 */
// DUP1 // 0x05
// DUP2 // dup1
// DUP2 // /* "":107:119 */
// SSTORE // sstore
// POP // stop
// POP

View File

@ -2,22 +2,23 @@
// ==== // ====
// stackOptimization: true // stackOptimization: true
// ---- // ----
// PUSH1 0x0 // /* "":2:16 */
// PUSH1 0x0 // 0x00
// PUSH1 0x0 // dup1
// PUSH1 0x0 // dup1
// POP // dup1
// PUSH1 0x2 // pop
// SWAP2 // swap2
// POP // swap1
// PUSH1 0x3 // pop
// DUP4 // /* "":26:27 */
// DUP4 // 0x02
// MSTORE // swap1
// DUP2 // /* "":37:38 */
// DUP2 // 0x03
// MSTORE // swap2
// POP // /* "":39:51 */
// POP // mstore
// POP // /* "":52:64 */
// POP // mstore
// stop

View File

@ -5,36 +5,31 @@
// ==== // ====
// stackOptimization: true // stackOptimization: true
// ---- // ----
// PUSH1 0x12 // tag_1
// JUMP // /* "":58:61 */
// JUMPDEST // tag_2
// PUSH1 0x0 // jump // in
// PUSH1 0x0 // tag_1:
// PUSH1 0x0 // pop
// PUSH1 0x0 // swap2
// JUMPDEST // swap1
// SWAP1 // pop
// SWAP2 // /* "":72:73 */
// SWAP3 // 0x02
// SWAP4 // swap1
// JUMP // /* "":84:85 */
// JUMPDEST // 0x03
// PUSH1 0x18 // swap2
// PUSH1 0x3 // /* "":86:99 */
// JUMP // mstore
// JUMPDEST // /* "":100:113 */
// POP // mstore
// PUSH1 0x2 // stop
// SWAP2 // /* "":6:35 */
// POP // tag_2:
// PUSH1 0x3 // 0x00
// DUP4 // 0x00
// DUP4 // 0x00
// MSTORE // 0x00
// DUP2 // swap4
// DUP2 // jump // out
// MSTORE
// POP
// POP
// POP
// POP

View File

@ -9,42 +9,35 @@
// ==== // ====
// stackOptimization: true // stackOptimization: true
// ---- // ----
// PUSH1 0x5 // /* "":106:107 */
// PUSH1 0x6 // 0x05
// PUSH1 0x7 // /* "":118:119 */
// DUP2 // 0x06
// DUP4 // /* "":130:131 */
// MSTORE // 0x07
// PUSH1 0x1B // swap2
// JUMP // /* "":136:150 */
// JUMPDEST // mstore
// PUSH1 0x0 // tag_1
// PUSH1 0x0 // /* "":207:210 */
// PUSH1 0x0 // tag_2
// PUSH1 0x0 // jump // in
// JUMPDEST // tag_1:
// SWAP1 // swap4
// SWAP2 // swap1
// SWAP3 // swap3
// SWAP4 // swap2
// JUMP // pop
// JUMPDEST // /* "":211:224 */
// PUSH1 0x21 // mstore
// PUSH1 0xC // /* "":225:237 */
// JUMP // mstore
// JUMPDEST // stop
// SWAP6 // /* "":155:184 */
// POP // tag_2:
// SWAP4 // 0x00
// POP // 0x00
// POP // 0x00
// DUP1 // 0x00
// DUP3 // swap4
// MSTORE // jump // out
// POP
// POP
// DUP2
// DUP2
// MSTORE
// POP
// POP

View File

@ -33,78 +33,105 @@
// ==== // ====
// stackOptimization: true // stackOptimization: true
// ---- // ----
// PUSH1 0x7 // /* "":15:16 */
// PUSH1 0x42 // 0x07
// DUP16 // /* "":94:121 */
// PUSH1 0x0 // verbatimbytecode_6042
// SSTORE // swap15
// PUSH1 0x43 // /* "":287:288 */
// DUP2 // 0x00
// PUSH1 0x1 // swap15
// MSTORE // swap2
// DUP1 // swap15
// PUSH1 0x1 // swap14
// MSTORE // swap3
// POP // swap14
// POP // swap13
// DUP15 // swap4
// PUSH1 0x1 // swap13
// SSTORE // swap12
// DUP14 // swap5
// PUSH1 0x1 // swap12
// SSTORE // swap11
// DUP13 // swap6
// PUSH1 0x1 // swap11
// SSTORE // swap10
// DUP12 // swap7
// PUSH1 0x1 // swap10
// SSTORE // swap9
// DUP11 // swap8
// PUSH1 0x1 // swap9
// SSTORE // /* "":280:291 */
// DUP10 // sstore
// PUSH1 0x1 // /* "":370:396 */
// SSTORE // verbatimbytecode_6043
// DUP9 // swap1
// PUSH1 0x1 // /* "":521:522 */
// SSTORE // 0x01
// DUP8 // /* "":514:527 */
// PUSH1 0x1 // mstore
// SSTORE // /* "":539:540 */
// DUP7 // 0x01
// PUSH1 0x1 // /* "":532:545 */
// SSTORE // mstore
// DUP6 // /* "":653:654 */
// PUSH1 0x1 // 0x01
// SSTORE // /* "":646:659 */
// DUP5 // sstore
// PUSH1 0x1 // /* "":671:672 */
// SSTORE // 0x01
// DUP4 // /* "":664:677 */
// PUSH1 0x1 // sstore
// SSTORE // /* "":689:690 */
// DUP3 // 0x01
// PUSH1 0x1 // /* "":682:695 */
// SSTORE // sstore
// DUP2 // /* "":707:708 */
// PUSH1 0x1 // 0x01
// SSTORE // /* "":700:713 */
// DUP1 // sstore
// PUSH1 0x1 // /* "":725:726 */
// SSTORE // 0x01
// POP // /* "":718:731 */
// POP // sstore
// POP // /* "":743:744 */
// POP // 0x01
// POP // /* "":736:749 */
// POP // sstore
// POP // /* "":761:762 */
// POP // 0x01
// POP // /* "":754:767 */
// POP // sstore
// POP // /* "":779:780 */
// POP // 0x01
// POP // /* "":772:785 */
// POP // sstore
// POP // /* "":797:798 */
// POP // 0x01
// /* "":790:803 */
// sstore
// /* "":815:816 */
// 0x01
// /* "":808:822 */
// sstore
// /* "":834:835 */
// 0x01
// /* "":827:841 */
// sstore
// /* "":853:854 */
// 0x01
// /* "":846:860 */
// sstore
// /* "":872:873 */
// 0x01
// /* "":865:879 */
// sstore
// /* "":891:892 */
// 0x01
// /* "":884:898 */
// sstore
// /* "":910:911 */
// 0x01
// /* "":903:917 */
// sstore
// stop

View File

@ -2,5 +2,6 @@
// ==== // ====
// stackOptimization: true // stackOptimization: true
// ---- // ----
// PUSH1 0x0 // /* "":2:7 */
// POP // 0x00
// stop

View File

@ -2,5 +2,6 @@
// ==== // ====
// stackOptimization: true // stackOptimization: true
// ---- // ----
// PUSH1 0x1 // /* "":11:12 */
// POP // 0x01
// stop

View File

@ -2,8 +2,12 @@
// ==== // ====
// stackOptimization: true // stackOptimization: true
// ---- // ----
// PUSH1 0x1 // /* "":11:12 */
// POP // pop(0x01)
// PUSH1 0x4 // /* "":23:24 */
// PUSH1 0x3 // 0x04
// MSTORE // /* "":20:21 */
// 0x03
// /* "":13:25 */
// mstore
// stop

View File

@ -2,11 +2,16 @@
// ==== // ====
// stackOptimization: true // stackOptimization: true
// ---- // ----
// PUSH1 0x1 // /* "":11:12 */
// PUSH1 0x4 // 0x01
// PUSH1 0x3 // /* "":23:24 */
// MSTORE // 0x04
// DUP1 // /* "":20:21 */
// MLOAD // 0x03
// POP // /* "":13:25 */
// POP // mstore
// /* "":30:38 */
// mload
// /* "":26:39 */
// pop
// stop

View File

@ -2,3 +2,4 @@
// ==== // ====
// stackOptimization: true // stackOptimization: true
// ---- // ----
// stop

View File

@ -2,25 +2,23 @@
// ==== // ====
// stackOptimization: true // stackOptimization: true
// ---- // ----
// PUSH1 0x0 // /* "":11:12 */
// DUP1 // 0x00
// PUSH1 0x0 // /* "":27:28 */
// DUP2 // 0x00
// EQ // eq
// PUSH1 0x11 // tag_1
// JUMPI // jumpi
// PUSH1 0x3 // tag_2:
// SWAP2 // /* "":70:71 */
// POP // pop(0x03)
// PUSH1 0x18 // tag_3:
// JUMP // /* "":83:84 */
// JUMPDEST // 0x09
// PUSH1 0x2 // stop
// POP // tag_1:
// PUSH1 0x3 // /* "":40:41 */
// POP // pop(0x02)
// JUMPDEST // /* "":51:52 */
// POP // pop(0x03)
// POP // jump(tag_3)
// PUSH1 0x9
// POP

View File

@ -0,0 +1,75 @@
{
fun_c()
function fun_c()
{
switch iszero(calldataload(0))
case 0 { }
default {
if calldataload(1)
{
leave
}
if calldataload(2)
{
revert(0, 0)
}
}
revert(0, 0)
}
}
// ====
// stackOptimization: true
// ----
// tag_1
// /* "":14:21 */
// tag_2
// jump // in
// tag_1:
// stop
// /* "":34:458 */
// tag_2:
// /* "":108:109 */
// 0x00
// /* "":95:110 */
// calldataload
// /* "":88:111 */
// iszero
// /* "":133:134 */
// 0x00
// eq
// tag_3
// jumpi
// tag_4:
// /* "":201:202 */
// 0x01
// /* "":188:203 */
// calldataload
// tag_5
// jumpi
// tag_6:
// pop
// /* "":314:315 */
// 0x02
// /* "":301:316 */
// calldataload
// tag_7
// jumpi
// tag_8:
// tag_9:
// /* "":442:443 */
// 0x00
// dup1
// /* "":432:444 */
// revert
// tag_7:
// /* "":373:374 */
// 0x00
// dup1
// /* "":363:375 */
// revert
// tag_5:
// /* "":34:458 */
// jump // out
// tag_3:
// pop
// jump(tag_9)