From 4f23db2b00d918de0dd8a619a958fb4dbe0dbcc8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Kamil=20=C5=9Aliwak?= Date: Fri, 8 Mar 2024 20:33:07 +0100 Subject: [PATCH] Update other test expectations --- .../debug_info_in_yul_snippet_escaping/output | 62 +- test/cmdlineTests/function_debug_info/output | 4 +- .../output | 17 +- .../output | 17 +- test/cmdlineTests/name_simplifier/output | 134 +-- .../cmdlineTests/optimizer_array_sload/output | 15 +- .../output.json | 152 +-- .../output.json | 140 +-- .../output.json | 1033 +++++++++-------- .../viair_subobject_optimization/output | 51 +- .../sizeLimits/combined_too_large_paris.sol | 6 +- .../combined_too_large_shanghai.sol | 8 +- .../initcode_too_large_shanghai.sol | 2 +- .../yulOptimizerTests/fullSuite/abi2.yul | 31 +- .../fullSuite/abi_example1.yul | 58 +- .../fullSuite/ackermann_function.yul | 3 +- .../fullSuite/ackermann_function_if.yul | 3 +- .../yulOptimizerTests/fullSuite/aztec.yul | 79 +- .../call_arguments_without_side_effects.yul | 29 +- .../fullSuite/create2_and_mask.yul | 5 +- .../fullSuite/create_and_mask.yul | 5 +- .../fullSuite/devcon_example.yul | 5 +- .../fullSuite/extcodelength.yul | 8 +- .../fullSuite/loopInvariantCodeMotion.yul | 5 +- .../yulOptimizerTests/fullSuite/medium.yul | 11 +- ..._dependent_cse_bug_part_1_pre_shanghai.yul | 11 +- ..._dependent_cse_bug_part_2_pre_shanghai.yul | 11 +- .../fullSuite/stack_compressor_msize.yul | 28 +- 28 files changed, 960 insertions(+), 973 deletions(-) diff --git a/test/cmdlineTests/debug_info_in_yul_snippet_escaping/output b/test/cmdlineTests/debug_info_in_yul_snippet_escaping/output index 0bd6285b785e..d5c02fc82151 100644 --- a/test/cmdlineTests/debug_info_in_yul_snippet_escaping/output +++ b/test/cmdlineTests/debug_info_in_yul_snippet_escaping/output @@ -428,8 +428,7 @@ object "D_27" { { /// @src 0:279:599 "contract D /** @src 0:96:165 \"contract D {...\" *\/ {..." let _1 := memoryguard(0x80) - let _2 := 64 - mstore(_2, _1) + mstore(64, _1) if iszero(lt(calldatasize(), 4)) { if eq(0x26121ff0, shr(224, calldataload(0))) @@ -437,10 +436,9 @@ object "D_27" { if callvalue() { revert(0, 0) } if slt(add(calldatasize(), not(3)), 0) { revert(0, 0) } /// @src 0:446:491 "new /// @src 0:149:156 \"new C()\"..." - let _3 := datasize("C_2") - let _4 := add(_1, _3) - let _5 := 0xffffffffffffffff - if or(gt(_4, _5), lt(_4, _1)) + let _2 := datasize("C_2") + let _3 := add(_1, _2) + if or(gt(_3, 0xffffffffffffffff), lt(_3, _1)) { /// @src 0:279:599 "contract D /** @src 0:96:165 \"contract D {...\" *\/ {..." mstore(0, shl(224, 0x4e487b71)) @@ -448,45 +446,53 @@ object "D_27" { revert(0, 0x24) } /// @src 0:446:491 "new /// @src 0:149:156 \"new C()\"..." - datacopy(_1, dataoffset("C_2"), _3) - if iszero(create(/** @src 0:279:599 "contract D /** @src 0:96:165 \"contract D {...\" *\/ {..." */ 0, /** @src 0:446:491 "new /// @src 0:149:156 \"new C()\"..." */ _1, sub(_4, _1))) + datacopy(_1, dataoffset("C_2"), _2) + if iszero(create(/** @src 0:279:599 "contract D /** @src 0:96:165 \"contract D {...\" *\/ {..." */ 0, /** @src 0:446:491 "new /// @src 0:149:156 \"new C()\"..." */ _1, sub(_3, _1))) { /// @src 0:279:599 "contract D /** @src 0:96:165 \"contract D {...\" *\/ {..." - let pos := mload(_2) + let pos := mload(64) returndatacopy(pos, 0, returndatasize()) revert(pos, returndatasize()) } - let memPtr := mload(_2) - let newFreePtr := add(memPtr, _2) - if or(gt(newFreePtr, /** @src 0:446:491 "new /// @src 0:149:156 \"new C()\"..." */ _5), /** @src 0:279:599 "contract D /** @src 0:96:165 \"contract D {...\" *\/ {..." */ lt(newFreePtr, memPtr)) + let memPtr := 0 + let size := 0 + size := 0 + let memPtr_1 := mload(64) + let newFreePtr := add(memPtr_1, 64) + if or(gt(newFreePtr, /** @src 0:446:491 "new /// @src 0:149:156 \"new C()\"..." */ 0xffffffffffffffff), /** @src 0:279:599 "contract D /** @src 0:96:165 \"contract D {...\" *\/ {..." */ lt(newFreePtr, memPtr_1)) { mstore(0, shl(224, 0x4e487b71)) mstore(4, 0x41) revert(0, 0x24) } - mstore(_2, newFreePtr) - mstore(memPtr, 2) - mstore(add(memPtr, 32), "/*") - let memPtr_1 := mload(_2) - let newFreePtr_1 := add(memPtr_1, 96) - if or(gt(newFreePtr_1, /** @src 0:446:491 "new /// @src 0:149:156 \"new C()\"..." */ _5), /** @src 0:279:599 "contract D /** @src 0:96:165 \"contract D {...\" *\/ {..." */ lt(newFreePtr_1, memPtr_1)) + mstore(64, newFreePtr) + memPtr := memPtr_1 + mstore(memPtr_1, 2) + mstore(add(memPtr_1, 32), "/*") + let memPtr_2 := 0 + let size_1 := 0 + size_1 := 0 + let memPtr_3 := mload(64) + let newFreePtr_1 := add(memPtr_3, 96) + if or(gt(newFreePtr_1, /** @src 0:446:491 "new /// @src 0:149:156 \"new C()\"..." */ 0xffffffffffffffff), /** @src 0:279:599 "contract D /** @src 0:96:165 \"contract D {...\" *\/ {..." */ lt(newFreePtr_1, memPtr_3)) { mstore(0, shl(224, 0x4e487b71)) mstore(4, 0x41) revert(0, 0x24) } - mstore(_2, newFreePtr_1) - mstore(memPtr_1, 39) - let _6 := add(memPtr_1, 32) - mstore(_6, 0x2f2a2a204073726320303a39363a313635202022636f6e74726163742044207b) - mstore(add(memPtr_1, _2), shl(200, 0x2e2e2e22202a2f)) - let memPos := mload(_2) + mstore(64, newFreePtr_1) + memPtr_2 := memPtr_3 + mstore(memPtr_3, 39) + let _4 := add(memPtr_3, 32) + mstore(_4, 0x2f2a2a204073726320303a39363a313635202022636f6e74726163742044207b) + mstore(add(memPtr_3, 64), shl(200, 0x2e2e2e22202a2f)) + let memPos := mload(64) mstore(memPos, 32) - let length := mload(memPtr_1) + let length := mload(memPtr_3) mstore(add(memPos, 32), length) - mcopy(add(memPos, _2), _6, length) - mstore(add(add(memPos, length), _2), 0) - return(memPos, add(sub(add(memPos, and(add(length, 31), not(31))), memPos), _2)) + mcopy(add(memPos, 64), _4, length) + mstore(add(add(memPos, length), 64), 0) + return(memPos, add(sub(add(memPos, and(add(length, 31), not(31))), memPos), 64)) } } revert(0, 0) diff --git a/test/cmdlineTests/function_debug_info/output b/test/cmdlineTests/function_debug_info/output index c359d4e1c155..0d58c28cc62f 100644 --- a/test/cmdlineTests/function_debug_info/output +++ b/test/cmdlineTests/function_debug_info/output @@ -41,7 +41,7 @@ }, "abi_decode_tuple_t_uint256": { - "entryPoint": 269, + "entryPoint": 271, "parameterSlots": 2, "returnSlots": 1 }, @@ -52,7 +52,7 @@ }, "panic_error_0x32": { - "entryPoint": 292, + "entryPoint": 294, "parameterSlots": 0, "returnSlots": 0 } diff --git a/test/cmdlineTests/mcopy_bytes_array_returned_from_function/output b/test/cmdlineTests/mcopy_bytes_array_returned_from_function/output index 2441357d97fb..5c126b9d5690 100644 --- a/test/cmdlineTests/mcopy_bytes_array_returned_from_function/output +++ b/test/cmdlineTests/mcopy_bytes_array_returned_from_function/output @@ -22,25 +22,24 @@ object "C_14" { { if callvalue() { revert(0, 0) } if slt(add(calldatasize(), not(3)), 0) { revert(0, 0) } - let _2 := 64 - let newFreePtr := add(_1, _2) + let newFreePtr := add(_1, 64) if or(gt(newFreePtr, 0xffffffffffffffff), lt(newFreePtr, _1)) { mstore(0, shl(224, 0x4e487b71)) mstore(4, 0x41) revert(0, 36) } - mstore(_2, newFreePtr) + mstore(64, newFreePtr) mstore(_1, 5) - let _3 := add(_1, 0x20) - mstore(_3, "aaaaa") - let memPos := mload(_2) + let _2 := add(_1, 0x20) + mstore(_2, "aaaaa") + let memPos := mload(64) mstore(memPos, 0x20) let length := mload(_1) mstore(add(memPos, 0x20), length) - mcopy(add(memPos, _2), _3, length) - mstore(add(add(memPos, length), _2), 0) - return(memPos, add(sub(add(memPos, and(add(length, 31), not(31))), memPos), _2)) + mcopy(add(memPos, 64), _2, length) + mstore(add(add(memPos, length), 64), 0) + return(memPos, add(sub(add(memPos, and(add(length, 31), not(31))), memPos), 64)) } } revert(0, 0) diff --git a/test/cmdlineTests/mcopy_string_literal_returned_from_function/output b/test/cmdlineTests/mcopy_string_literal_returned_from_function/output index 02740ec0d6cb..cd11dbc88687 100644 --- a/test/cmdlineTests/mcopy_string_literal_returned_from_function/output +++ b/test/cmdlineTests/mcopy_string_literal_returned_from_function/output @@ -22,25 +22,24 @@ object "C_10" { { if callvalue() { revert(0, 0) } if slt(add(calldatasize(), not(3)), 0) { revert(0, 0) } - let _2 := 64 - let newFreePtr := add(_1, _2) + let newFreePtr := add(_1, 64) if or(gt(newFreePtr, 0xffffffffffffffff), lt(newFreePtr, _1)) { mstore(0, shl(224, 0x4e487b71)) mstore(4, 0x41) revert(0, 0x24) } - mstore(_2, newFreePtr) + mstore(64, newFreePtr) mstore(_1, 25) - let _3 := add(_1, 0x20) - mstore(_3, "MCOPY on Cancun vacation.") - let memPos := mload(_2) + let _2 := add(_1, 0x20) + mstore(_2, "MCOPY on Cancun vacation.") + let memPos := mload(64) mstore(memPos, 0x20) let length := mload(_1) mstore(add(memPos, 0x20), length) - mcopy(add(memPos, _2), _3, length) - mstore(add(add(memPos, length), _2), 0) - return(memPos, add(sub(add(memPos, and(add(length, 31), not(31))), memPos), _2)) + mcopy(add(memPos, 64), _2, length) + mstore(add(add(memPos, length), 64), 0) + return(memPos, add(sub(add(memPos, and(add(length, 31), not(31))), memPos), 64)) } } revert(0, 0) diff --git a/test/cmdlineTests/name_simplifier/output b/test/cmdlineTests/name_simplifier/output index 0a461e3e4af4..0f49b20e0e7b 100644 --- a/test/cmdlineTests/name_simplifier/output +++ b/test/cmdlineTests/name_simplifier/output @@ -17,100 +17,104 @@ object "C_59" { code { { /// @src 0:346:625 "contract C {..." - let _1 := memoryguard(0x80) - let _2 := 4 - if iszero(lt(calldatasize(), _2)) + mstore(64, memoryguard(0x80)) + if iszero(lt(calldatasize(), 4)) { if eq(0xf8eddcc6, shr(224, calldataload(0))) { if callvalue() { revert(0, 0) } - let _3 := 32 - if slt(add(calldatasize(), not(3)), _3) { revert(0, 0) } - let offset := calldataload(_2) - let _4 := 0xffffffffffffffff - if gt(offset, _4) { revert(0, 0) } + if slt(add(calldatasize(), not(3)), 32) { revert(0, 0) } + let offset := calldataload(4) + if gt(offset, 0xffffffffffffffff) { revert(0, 0) } if iszero(slt(add(offset, 35), calldatasize())) { revert(0, 0) } - let _5 := calldataload(add(_2, offset)) - let _6 := 36 - if gt(_5, _4) + let _1 := calldataload(add(4, offset)) + if gt(_1, 0xffffffffffffffff) { mstore(0, shl(224, 0x4e487b71)) - mstore(_2, 0x41) - revert(0, _6) + mstore(4, 0x41) + revert(0, 36) } - let _7 := shl(5, _5) - let _8 := not(31) - let newFreePtr := add(_1, and(add(_7, 63), _8)) - if or(gt(newFreePtr, _4), lt(newFreePtr, _1)) + let _2 := shl(5, _1) + let memPtr := 0 + memPtr := mload(64) + let newFreePtr := add(memPtr, and(add(_2, 63), not(31))) + if or(gt(newFreePtr, 0xffffffffffffffff), lt(newFreePtr, memPtr)) { mstore(0, shl(224, 0x4e487b71)) - mstore(_2, 0x41) - revert(0, _6) + mstore(4, 0x41) + revert(0, 36) } - let _9 := 64 - mstore(_9, newFreePtr) - let dst := _1 - mstore(_1, _5) - dst := add(_1, _3) + mstore(64, newFreePtr) + let dst := memPtr + mstore(memPtr, _1) + dst := add(memPtr, 32) let dst_1 := dst - let srcEnd := add(add(offset, _7), _6) + let srcEnd := add(add(offset, _2), 36) if gt(srcEnd, calldatasize()) { revert(0, 0) } - let src := add(offset, _6) - for { } lt(src, srcEnd) { src := add(src, _3) } + let src := add(offset, 36) + for { } lt(src, srcEnd) { src := add(src, 32) } { - if slt(sub(calldatasize(), src), _3) { revert(0, 0) } - let memPtr := mload(_9) - let newFreePtr_1 := add(memPtr, _3) - if or(gt(newFreePtr_1, _4), lt(newFreePtr_1, memPtr)) + if slt(sub(calldatasize(), src), 32) { revert(0, 0) } + let memPtr_1 := 0 + memPtr_1 := mload(64) + let newFreePtr_1 := add(memPtr_1, 32) + if or(gt(newFreePtr_1, 0xffffffffffffffff), lt(newFreePtr_1, memPtr_1)) { mstore(0, shl(224, 0x4e487b71)) - mstore(_2, 0x41) - revert(0, _6) + mstore(4, 0x41) + revert(0, 36) } - mstore(_9, newFreePtr_1) - mstore(memPtr, calldataload(src)) - mstore(dst, memPtr) - dst := add(dst, _3) + mstore(64, newFreePtr_1) + mstore(memPtr_1, calldataload(src)) + mstore(dst, memPtr_1) + dst := add(dst, 32) } - if iszero(mload(_1)) + /// @src 0:469:474 "_s[0]" + let addr := /** @src 0:346:625 "contract C {..." */ 0 + if iszero(mload(memPtr)) { mstore(0, shl(224, 0x4e487b71)) - mstore(_2, 0x32) - revert(0, _6) + mstore(4, 0x32) + revert(0, 36) } + addr := dst_1 sstore(0, mload(/** @src 0:469:474 "_s[0]" */ mload(dst_1))) - /// @src 0:346:625 "contract C {..." - if iszero(lt(/** @src 0:492:493 "1" */ 0x01, /** @src 0:346:625 "contract C {..." */ mload(_1))) + /// @src 0:489:494 "_s[1]" + let addr_1 := /** @src 0:346:625 "contract C {..." */ 0 + if iszero(lt(/** @src 0:492:493 "1" */ 0x01, /** @src 0:346:625 "contract C {..." */ mload(memPtr))) { mstore(0, shl(224, 0x4e487b71)) - mstore(_2, 0x32) - revert(0, _6) + mstore(4, 0x32) + revert(0, 36) } - let _10 := mload(/** @src 0:489:494 "_s[1]" */ mload(/** @src 0:346:625 "contract C {..." */ add(_1, _9))) - sstore(0x02, _10) - let memPtr_1 := mload(_9) - let newFreePtr_2 := add(memPtr_1, 160) - if or(gt(newFreePtr_2, _4), lt(newFreePtr_2, memPtr_1)) + addr_1 := add(memPtr, 64) + let _3 := mload(/** @src 0:489:494 "_s[1]" */ mload(addr_1)) + /// @src 0:346:625 "contract C {..." + sstore(0x02, _3) + let memPtr_2 := 0 + memPtr_2 := mload(64) + let newFreePtr_2 := add(memPtr_2, 160) + if or(gt(newFreePtr_2, 0xffffffffffffffff), lt(newFreePtr_2, memPtr_2)) { mstore(0, shl(224, 0x4e487b71)) - mstore(_2, 0x41) - revert(0, _6) + mstore(4, 0x41) + revert(0, 36) } - mstore(_9, newFreePtr_2) - mstore(memPtr_1, 100) - let _11 := add(memPtr_1, _3) - mstore(_11, "longstringlongstringlongstringlo") - mstore(add(memPtr_1, _9), "ngstringlongstringlongstringlong") - mstore(add(memPtr_1, 96), "stringlongstringlongstringlongst") - mstore(add(memPtr_1, 128), "ring") - let memPos := mload(_9) - mstore(memPos, _10) - mstore(add(memPos, _3), _9) - let length := mload(memPtr_1) - mstore(add(memPos, _9), length) - mcopy(add(memPos, 96), _11, length) + mstore(64, newFreePtr_2) + mstore(memPtr_2, 100) + let _4 := add(memPtr_2, 32) + mstore(_4, "longstringlongstringlongstringlo") + mstore(add(memPtr_2, 64), "ngstringlongstringlongstringlong") + mstore(add(memPtr_2, 96), "stringlongstringlongstringlongst") + mstore(add(memPtr_2, 128), "ring") + let memPos := mload(64) + mstore(memPos, _3) + mstore(add(memPos, 32), 64) + let length := mload(memPtr_2) + mstore(add(memPos, 64), length) + mcopy(add(memPos, 96), _4, length) mstore(add(add(memPos, length), 96), 0) - return(memPos, add(sub(add(memPos, and(add(length, 31), _8)), memPos), 96)) + return(memPos, add(sub(add(memPos, and(add(length, 0x1f), not(31))), memPos), 96)) } } revert(0, 0) diff --git a/test/cmdlineTests/optimizer_array_sload/output b/test/cmdlineTests/optimizer_array_sload/output index b32d421d0717..c1e0796f56fa 100644 --- a/test/cmdlineTests/optimizer_array_sload/output +++ b/test/cmdlineTests/optimizer_array_sload/output @@ -18,7 +18,6 @@ object "Arraysum_34" { { /// @src 0:80:429 "contract Arraysum {..." mstore(64, memoryguard(0x80)) - let _1 := 4 if iszero(lt(calldatasize(), 4)) { if eq(0x81d73423, shr(224, calldataload(0))) @@ -26,12 +25,14 @@ object "Arraysum_34" { if callvalue() { revert(0, 0) } if slt(add(calldatasize(), not(3)), 0) { revert(0, 0) } let var_sum := 0 + /// @src 0:175:182 "sum = 0" + var_sum := /** @src 0:80:429 "contract Arraysum {..." */ 0 /// @src 0:368:378 "uint i = 0" let var_i := /** @src 0:80:429 "contract Arraysum {..." */ 0 - let _2 := sload(0) + let _1 := sload(0) /// @src 0:364:423 "for(uint i = 0; i < values.length; i++)..." for { } - /** @src 0:380:397 "i < values.length" */ lt(var_i, _2) + /** @src 0:80:429 "contract Arraysum {..." */ 1 /// @src 0:368:378 "uint i = 0" { /// @src 0:399:402 "i++" @@ -39,13 +40,17 @@ object "Arraysum_34" { } /// @src 0:399:402 "i++" { + /// @src 0:380:397 "i < values.length" + let _2 := iszero(lt(var_i, _1)) + if _2 { break } /// @src 0:80:429 "contract Arraysum {..." + _2 := 0 mstore(0, 0) let sum := add(var_sum, sload(add(18569430475105882587588266137607568536673111973893317399460219858819262702947, var_i))) if gt(var_sum, sum) { mstore(0, shl(224, 0x4e487b71)) - mstore(_1, 0x11) + mstore(4, 0x11) revert(0, 0x24) } /// @src 0:407:423 "sum += values[i]" @@ -54,7 +59,7 @@ object "Arraysum_34" { /// @src 0:80:429 "contract Arraysum {..." let memPos := mload(64) mstore(memPos, var_sum) - return(memPos, 32) + return(memPos, 0x20) } } revert(0, 0) diff --git a/test/cmdlineTests/standard_debug_info_in_evm_asm_via_ir_location/output.json b/test/cmdlineTests/standard_debug_info_in_evm_asm_via_ir_location/output.json index 143ad92c304a..d7786a00ae73 100644 --- a/test/cmdlineTests/standard_debug_info_in_evm_asm_via_ir_location/output.json +++ b/test/cmdlineTests/standard_debug_info_in_evm_asm_via_ir_location/output.json @@ -80,25 +80,18 @@ stop sub_0: assembly { /* \"C\":79:428 contract C... */ - 0x80 - 0x40 - swap1 - dup1 - dup3 - mstore + mstore(0x40, 0x80) jumpi(tag_2, iszero(lt(calldatasize, 0x04))) 0x00 dup1 revert tag_2: shr(0xe0, calldataload(0x00)) - swap1 - dup2 + dup1 0x26121ff0 eq tag_4 jumpi - pop dup1 0x793816ec eq @@ -126,19 +119,17 @@ sub_0: assembly { dup2 swap1 sstore - dup2 - mload + mload(0x40) shl(0xe4, 0x026121ff) /* \"C\":403:411 this.f() */ dup2 mstore /* \"C\":79:428 contract C... */ - swap2 swap1 /* \"C\":403:411 this.f() */ 0x20 /* \"C\":79:428 contract C... */ - dup4 + dup3 0x04 dup2 /* \"C\":403:407 this */ @@ -146,50 +137,46 @@ sub_0: assembly { /* \"C\":403:411 this.f() */ gas staticcall - swap3 - dup4 + swap2 + dup3 iszero tag_16 jumpi /* \"C\":79:428 contract C... */ 0x00 /* \"C\":403:411 this.f() */ - swap4 + swap3 tag_18 jumpi /* \"C\":79:428 contract C... */ tag_19: - /* \"C\":392:411 stateVar + this.f() */ - pop - tag_20 /* \"C\":403:411 this.f() */ 0x20 - /* \"C\":392:411 stateVar + this.f() */ - swap4 /* \"C\":392:422 stateVar + this.f() + immutVar */ - tag_21 + tag_20 /* \"C\":392:411 stateVar + this.f() */ - swap3 + tag_21 + dup6 + dup6 tag_1 jump\t// in - tag_20: + tag_21: /* \"C\":414:422 immutVar */ immutable(\"0xe4b1702d9298fee62dfeccc57d322a463ad55ca201256d01f62b45b2e1c21c10\") /* \"C\":392:422 stateVar + this.f() + immutVar */ swap1 tag_1 jump\t// in - tag_21: + tag_20: /* \"C\":79:428 contract C... */ - swap1 - mload + mload(0x40) swap1 dup2 mstore return /* \"C\":403:411 this.f() */ tag_18: - swap3 + swap2 pop 0x20 jumpi(tag_22, gt(0x20, returndatasize)) @@ -200,12 +187,12 @@ sub_0: assembly { add not(0x1f) and - dup5 + dup4 add 0xffffffffffffffff dup2 gt - dup6 + dup5 dup3 lt or @@ -215,9 +202,9 @@ sub_0: assembly { 0x20 /* \"C\":79:428 contract C... */ swap2 - dup6 + dup5 swap2 - dup6 + 0x40 mstore /* \"C\":403:411 this.f() */ dup2 @@ -227,11 +214,11 @@ sub_0: assembly { slt tag_26 jumpi - swap2 + swap1 mload - swap2 + swap1 /* \"C\":392:411 stateVar + this.f() */ - tag_20 + tag_21 /* \"C\":403:411 this.f() */ jump(tag_19) /* \"C\":79:428 contract C... */ @@ -254,8 +241,7 @@ sub_0: assembly { jump(tag_23) tag_16: /* \"C\":79:428 contract C... */ - dup3 - mload + mload(0x40) returndatasize 0x00 dup3 @@ -282,14 +268,11 @@ sub_0: assembly { revert /* \"C\":79:428 contract C... */ tag_6: - pop jumpi(tag_26, callvalue) jumpi(tag_26, slt(add(not(0x03), calldatasize), 0x00)) 0x20 - swap1 sload(0x00) - swap1 - mload + mload(0x40) swap1 dup2 mstore @@ -300,12 +283,11 @@ sub_0: assembly { /* \"C\":290:298 immutVar */ immutable(\"0xe4b1702d9298fee62dfeccc57d322a463ad55ca201256d01f62b45b2e1c21c10\") /* \"C\":117:119 41 */ - swap1 - dup2 + dup1 0x29 add - swap2 - dup3 + swap1 + dup2 slt 0x01 and @@ -313,7 +295,9 @@ sub_0: assembly { jumpi /* \"C\":79:428 contract C... */ 0x20 - swap2 + swap1 + mload(0x40) + swap1 dup2 mstore return @@ -445,25 +429,18 @@ stop sub_0: assembly { /* \"D\":91:166 contract D is C(3)... */ - 0x80 - 0x40 - swap1 - dup1 - dup3 - mstore + mstore(0x40, 0x80) jumpi(tag_2, iszero(lt(calldatasize, 0x04))) 0x00 dup1 revert tag_2: shr(0xe0, calldataload(0x00)) - swap1 - dup2 + dup1 0x26121ff0 eq tag_4 jumpi - pop dup1 0x793816ec eq @@ -491,19 +468,17 @@ sub_0: assembly { dup2 swap1 sstore - dup2 - mload + mload(0x40) shl(0xe4, 0x026121ff) /* \"C\":403:411 this.f() */ dup2 mstore /* \"D\":91:166 contract D is C(3)... */ - swap2 swap1 /* \"C\":403:411 this.f() */ 0x20 /* \"D\":91:166 contract D is C(3)... */ - dup4 + dup3 0x04 dup2 /* \"C\":403:407 this */ @@ -511,50 +486,46 @@ sub_0: assembly { /* \"C\":403:411 this.f() */ gas staticcall - swap3 - dup4 + swap2 + dup3 iszero tag_16 jumpi /* \"D\":91:166 contract D is C(3)... */ 0x00 /* \"C\":403:411 this.f() */ - swap4 + swap3 tag_18 jumpi /* \"D\":91:166 contract D is C(3)... */ tag_19: - /* \"C\":392:411 stateVar + this.f() */ - pop - tag_20 /* \"C\":403:411 this.f() */ 0x20 - /* \"C\":392:411 stateVar + this.f() */ - swap4 /* \"C\":392:422 stateVar + this.f() + immutVar */ - tag_21 + tag_20 /* \"C\":392:411 stateVar + this.f() */ - swap3 + tag_21 + dup6 + dup6 tag_1 jump\t// in - tag_20: + tag_21: /* \"C\":414:422 immutVar */ immutable(\"0xe4b1702d9298fee62dfeccc57d322a463ad55ca201256d01f62b45b2e1c21c10\") /* \"C\":392:422 stateVar + this.f() + immutVar */ swap1 tag_1 jump\t// in - tag_21: + tag_20: /* \"D\":91:166 contract D is C(3)... */ - swap1 - mload + mload(0x40) swap1 dup2 mstore return /* \"C\":403:411 this.f() */ tag_18: - swap3 + swap2 pop 0x20 jumpi(tag_22, gt(0x20, returndatasize)) @@ -565,12 +536,12 @@ sub_0: assembly { add not(0x1f) and - dup5 + dup4 add 0xffffffffffffffff dup2 gt - dup6 + dup5 dup3 lt or @@ -580,9 +551,9 @@ sub_0: assembly { 0x20 /* \"D\":91:166 contract D is C(3)... */ swap2 - dup6 + dup5 swap2 - dup6 + 0x40 mstore /* \"C\":403:411 this.f() */ dup2 @@ -592,11 +563,11 @@ sub_0: assembly { slt tag_26 jumpi - swap2 + swap1 mload - swap2 + swap1 /* \"C\":392:411 stateVar + this.f() */ - tag_20 + tag_21 /* \"C\":403:411 this.f() */ jump(tag_19) /* \"D\":91:166 contract D is C(3)... */ @@ -619,8 +590,7 @@ sub_0: assembly { jump(tag_23) tag_16: /* \"D\":91:166 contract D is C(3)... */ - dup3 - mload + mload(0x40) returndatasize 0x00 dup3 @@ -647,14 +617,11 @@ sub_0: assembly { revert /* \"D\":91:166 contract D is C(3)... */ tag_6: - pop jumpi(tag_26, callvalue) jumpi(tag_26, slt(add(not(0x03), calldatasize), 0x00)) 0x20 - swap1 sload(0x00) - swap1 - mload + mload(0x40) swap1 dup2 mstore @@ -665,12 +632,11 @@ sub_0: assembly { /* \"C\":290:298 immutVar */ immutable(\"0xe4b1702d9298fee62dfeccc57d322a463ad55ca201256d01f62b45b2e1c21c10\") /* \"C\":117:119 41 */ - swap1 - dup2 + dup1 0x29 add - swap2 - dup3 + swap1 + dup2 slt 0x01 and @@ -678,7 +644,9 @@ sub_0: assembly { jumpi /* \"D\":91:166 contract D is C(3)... */ 0x20 - swap2 + swap1 + mload(0x40) + swap1 dup2 mstore return diff --git a/test/cmdlineTests/standard_debug_info_in_yul_location/output.json b/test/cmdlineTests/standard_debug_info_in_yul_location/output.json index 2671162722e0..3dbfb1b5a347 100644 --- a/test/cmdlineTests/standard_debug_info_in_yul_location/output.json +++ b/test/cmdlineTests/standard_debug_info_in_yul_location/output.json @@ -653,9 +653,7 @@ object \"C_54\" { code { { /// @src 0:79:435 \"contract C...\" - let _1 := memoryguard(0x80) - let _2 := 64 - mstore(_2, _1) + mstore(64, memoryguard(0x80)) if iszero(lt(calldatasize(), 4)) { switch shr(224, calldataload(0)) @@ -663,89 +661,91 @@ object \"C_54\" { if callvalue() { revert(0, 0) } if slt(add(calldatasize(), not(3)), 0) { revert(0, 0) } /// @src 0:297:305 \"immutVar\" - let _3 := loadimmutable(\"8\") - /// @src 0:79:435 \"contract C...\" - let sum := add(/** @src 0:124:126 \"41\" */ 0x29, /** @src 0:79:435 \"contract C...\" */ _3) - if and(1, slt(sum, _3)) + let _1 := loadimmutable(\"8\") + /// @src 0:286:305 \"constVar + immutVar\" + let sum := /** @src 0:79:435 \"contract C...\" */ 0 + sum := add(/** @src 0:124:126 \"41\" */ 0x29, /** @src 0:79:435 \"contract C...\" */ _1) + if and(1, slt(sum, _1)) { mstore(0, shl(224, 0x4e487b71)) mstore(4, 0x11) revert(0, 0x24) } - mstore(_1, sum) - return(_1, 32) + let memPos := mload(64) + mstore(memPos, sum) + return(memPos, 32) } case 0x793816ec { if callvalue() { revert(0, 0) } if slt(add(calldatasize(), not(3)), 0) { revert(0, 0) } - let _4 := sload(0) - let memPos := mload(_2) - mstore(memPos, _4) - return(memPos, 32) + let _2 := sload(0) + let memPos_1 := mload(64) + mstore(memPos_1, _2) + return(memPos_1, 32) } case 0x9942ec6f { if callvalue() { revert(0, 0) } if slt(add(calldatasize(), not(3)), 0) { revert(0, 0) } - let _5 := sload(0) - if eq(_5, sub(shl(255, 1), 1)) + let _3 := sload(0) + if eq(_3, sub(shl(255, 1), 1)) { mstore(0, shl(224, 0x4e487b71)) mstore(4, 0x11) revert(0, 0x24) } - let ret := add(_5, 1) + let ret := add(_3, 1) sstore(0, ret) /// @src 0:410:418 \"this.f()\" - let _6 := /** @src 0:79:435 \"contract C...\" */ mload(_2) + let _4 := /** @src 0:79:435 \"contract C...\" */ mload(64) /// @src 0:410:418 \"this.f()\" - mstore(_6, /** @src 0:79:435 \"contract C...\" */ shl(228, 0x026121ff)) + mstore(_4, /** @src 0:79:435 \"contract C...\" */ shl(228, 0x026121ff)) /// @src 0:410:418 \"this.f()\" - let _7 := staticcall(gas(), /** @src 0:410:414 \"this\" */ address(), /** @src 0:410:418 \"this.f()\" */ _6, /** @src 0:79:435 \"contract C...\" */ 4, /** @src 0:410:418 \"this.f()\" */ _6, 32) - if iszero(_7) + let _5 := staticcall(gas(), /** @src 0:410:414 \"this\" */ address(), /** @src 0:410:418 \"this.f()\" */ _4, /** @src 0:79:435 \"contract C...\" */ 4, /** @src 0:410:418 \"this.f()\" */ _4, 32) + if iszero(_5) { /// @src 0:79:435 \"contract C...\" - let pos := mload(_2) + let pos := mload(64) returndatacopy(pos, 0, returndatasize()) revert(pos, returndatasize()) } /// @src 0:410:418 \"this.f()\" let expr := /** @src 0:79:435 \"contract C...\" */ 0 /// @src 0:410:418 \"this.f()\" - if _7 + if _5 { - let _8 := 32 - if gt(32, returndatasize()) { _8 := returndatasize() } + let _6 := 32 + if gt(32, returndatasize()) { _6 := returndatasize() } /// @src 0:79:435 \"contract C...\" - let newFreePtr := add(_6, and(add(_8, 31), not(31))) - if or(gt(newFreePtr, 0xffffffffffffffff), lt(newFreePtr, _6)) + let newFreePtr := add(_4, and(add(_6, 31), not(31))) + if or(gt(newFreePtr, 0xffffffffffffffff), lt(newFreePtr, _4)) { mstore(0, shl(224, 0x4e487b71)) mstore(4, 0x41) revert(0, 0x24) } - mstore(_2, newFreePtr) - if slt(sub(/** @src 0:410:418 \"this.f()\" */ add(_6, _8), /** @src 0:79:435 \"contract C...\" */ _6), /** @src 0:410:418 \"this.f()\" */ 32) + mstore(64, newFreePtr) + if slt(sub(/** @src 0:410:418 \"this.f()\" */ add(_4, _6), /** @src 0:79:435 \"contract C...\" */ _4), /** @src 0:410:418 \"this.f()\" */ 32) /// @src 0:79:435 \"contract C...\" { revert(0, 0) } /// @src 0:410:418 \"this.f()\" - expr := /** @src 0:79:435 \"contract C...\" */ mload(_6) + expr := /** @src 0:79:435 \"contract C...\" */ mload(_4) } /// @src 0:399:418 \"stateVar + this.f()\" let expr_1 := checked_add_int256(ret, expr) /// @src 0:392:429 \"return stateVar + this.f() + immutVar\" let var := /** @src 0:399:429 \"stateVar + this.f() + immutVar\" */ checked_add_int256(expr_1, /** @src 0:421:429 \"immutVar\" */ loadimmutable(\"8\")) /// @src 0:79:435 \"contract C...\" - let memPos_1 := mload(_2) - mstore(memPos_1, var) - return(memPos_1, /** @src 0:410:418 \"this.f()\" */ 32) + let memPos_2 := mload(64) + mstore(memPos_2, var) + return(memPos_2, /** @src 0:410:418 \"this.f()\" */ 32) } case /** @src 0:79:435 \"contract C...\" */ 0xa00b982b { if callvalue() { revert(0, 0) } if slt(add(calldatasize(), not(3)), 0) { revert(0, 0) } - let memPos_2 := mload(_2) - mstore(memPos_2, /** @src 0:124:126 \"41\" */ 0x29) + let memPos_3 := mload(64) + mstore(memPos_3, /** @src 0:124:126 \"41\" */ 0x29) /// @src 0:79:435 \"contract C...\" - return(memPos_2, 32) + return(memPos_3, 32) } } revert(0, 0) @@ -1498,9 +1498,7 @@ object \"D_72\" { code { { /// @src 1:91:166 \"contract D is C(3)...\" - let _1 := memoryguard(0x80) - let _2 := 64 - mstore(_2, _1) + mstore(64, memoryguard(0x80)) if iszero(lt(calldatasize(), 4)) { switch shr(224, calldataload(0)) @@ -1508,89 +1506,91 @@ object \"D_72\" { if callvalue() { revert(0, 0) } if slt(add(calldatasize(), not(3)), 0) { revert(0, 0) } /// @src 0:297:305 \"immutVar\" - let _3 := loadimmutable(\"8\") - /// @src 1:91:166 \"contract D is C(3)...\" - let sum := add(/** @src 0:124:126 \"41\" */ 0x29, /** @src 1:91:166 \"contract D is C(3)...\" */ _3) - if and(1, slt(sum, _3)) + let _1 := loadimmutable(\"8\") + /// @src 0:286:305 \"constVar + immutVar\" + let sum := /** @src 1:91:166 \"contract D is C(3)...\" */ 0 + sum := add(/** @src 0:124:126 \"41\" */ 0x29, /** @src 1:91:166 \"contract D is C(3)...\" */ _1) + if and(1, slt(sum, _1)) { mstore(0, shl(224, 0x4e487b71)) mstore(4, 0x11) revert(0, 0x24) } - mstore(_1, sum) - return(_1, 32) + let memPos := mload(64) + mstore(memPos, sum) + return(memPos, 32) } case 0x793816ec { if callvalue() { revert(0, 0) } if slt(add(calldatasize(), not(3)), 0) { revert(0, 0) } - let _4 := sload(0) - let memPos := mload(_2) - mstore(memPos, _4) - return(memPos, 32) + let _2 := sload(0) + let memPos_1 := mload(64) + mstore(memPos_1, _2) + return(memPos_1, 32) } case 0x9942ec6f { if callvalue() { revert(0, 0) } if slt(add(calldatasize(), not(3)), 0) { revert(0, 0) } - let _5 := sload(0) - if eq(_5, sub(shl(255, 1), 1)) + let _3 := sload(0) + if eq(_3, sub(shl(255, 1), 1)) { mstore(0, shl(224, 0x4e487b71)) mstore(4, 0x11) revert(0, 0x24) } - let ret := add(_5, 1) + let ret := add(_3, 1) sstore(0, ret) /// @src 0:410:418 \"this.f()\" - let _6 := /** @src 1:91:166 \"contract D is C(3)...\" */ mload(_2) + let _4 := /** @src 1:91:166 \"contract D is C(3)...\" */ mload(64) /// @src 0:410:418 \"this.f()\" - mstore(_6, /** @src 1:91:166 \"contract D is C(3)...\" */ shl(228, 0x026121ff)) + mstore(_4, /** @src 1:91:166 \"contract D is C(3)...\" */ shl(228, 0x026121ff)) /// @src 0:410:418 \"this.f()\" - let _7 := staticcall(gas(), /** @src 0:410:414 \"this\" */ address(), /** @src 0:410:418 \"this.f()\" */ _6, /** @src 1:91:166 \"contract D is C(3)...\" */ 4, /** @src 0:410:418 \"this.f()\" */ _6, 32) - if iszero(_7) + let _5 := staticcall(gas(), /** @src 0:410:414 \"this\" */ address(), /** @src 0:410:418 \"this.f()\" */ _4, /** @src 1:91:166 \"contract D is C(3)...\" */ 4, /** @src 0:410:418 \"this.f()\" */ _4, 32) + if iszero(_5) { /// @src 1:91:166 \"contract D is C(3)...\" - let pos := mload(_2) + let pos := mload(64) returndatacopy(pos, 0, returndatasize()) revert(pos, returndatasize()) } /// @src 0:410:418 \"this.f()\" let expr := /** @src 1:91:166 \"contract D is C(3)...\" */ 0 /// @src 0:410:418 \"this.f()\" - if _7 + if _5 { - let _8 := 32 - if gt(32, returndatasize()) { _8 := returndatasize() } + let _6 := 32 + if gt(32, returndatasize()) { _6 := returndatasize() } /// @src 1:91:166 \"contract D is C(3)...\" - let newFreePtr := add(_6, and(add(_8, 31), not(31))) - if or(gt(newFreePtr, 0xffffffffffffffff), lt(newFreePtr, _6)) + let newFreePtr := add(_4, and(add(_6, 31), not(31))) + if or(gt(newFreePtr, 0xffffffffffffffff), lt(newFreePtr, _4)) { mstore(0, shl(224, 0x4e487b71)) mstore(4, 0x41) revert(0, 0x24) } - mstore(_2, newFreePtr) - if slt(sub(/** @src 0:410:418 \"this.f()\" */ add(_6, _8), /** @src 1:91:166 \"contract D is C(3)...\" */ _6), /** @src 0:410:418 \"this.f()\" */ 32) + mstore(64, newFreePtr) + if slt(sub(/** @src 0:410:418 \"this.f()\" */ add(_4, _6), /** @src 1:91:166 \"contract D is C(3)...\" */ _4), /** @src 0:410:418 \"this.f()\" */ 32) /// @src 1:91:166 \"contract D is C(3)...\" { revert(0, 0) } /// @src 0:410:418 \"this.f()\" - expr := /** @src 1:91:166 \"contract D is C(3)...\" */ mload(_6) + expr := /** @src 1:91:166 \"contract D is C(3)...\" */ mload(_4) } /// @src 0:399:418 \"stateVar + this.f()\" let expr_1 := checked_add_int256(ret, expr) /// @src 0:392:429 \"return stateVar + this.f() + immutVar\" let var := /** @src 0:399:429 \"stateVar + this.f() + immutVar\" */ checked_add_int256(expr_1, /** @src 0:421:429 \"immutVar\" */ loadimmutable(\"8\")) /// @src 1:91:166 \"contract D is C(3)...\" - let memPos_1 := mload(_2) - mstore(memPos_1, var) - return(memPos_1, /** @src 0:410:418 \"this.f()\" */ 32) + let memPos_2 := mload(64) + mstore(memPos_2, var) + return(memPos_2, /** @src 0:410:418 \"this.f()\" */ 32) } case /** @src 1:91:166 \"contract D is C(3)...\" */ 0xa00b982b { if callvalue() { revert(0, 0) } if slt(add(calldatasize(), not(3)), 0) { revert(0, 0) } - let memPos_2 := mload(_2) - mstore(memPos_2, /** @src 0:124:126 \"41\" */ 0x29) + let memPos_3 := mload(64) + mstore(memPos_3, /** @src 0:124:126 \"41\" */ 0x29) /// @src 1:91:166 \"contract D is C(3)...\" - return(memPos_2, 32) + return(memPos_3, 32) } } revert(0, 0) diff --git a/test/cmdlineTests/standard_optimizer_generatedSources/output.json b/test/cmdlineTests/standard_optimizer_generatedSources/output.json index da2c31cbee25..db05ba943992 100644 --- a/test/cmdlineTests/standard_optimizer_generatedSources/output.json +++ b/test/cmdlineTests/standard_optimizer_generatedSources/output.json @@ -19,9 +19,9 @@ { "ast": { - "nativeSrc": "0:1445:1", + "nativeSrc": "0:1489:1", "nodeType": "YulBlock", - "src": "0:1445:1", + "src": "0:1489:1", "statements": [ { @@ -182,41 +182,17 @@ { "body": { - "nativeSrc": "241:1020:1", + "nativeSrc": "241:1064:1", "nodeType": "YulBlock", - "src": "241:1020:1", + "src": "241:1064:1", "statements": [ - { - "nativeSrc": "251:12:1", - "nodeType": "YulVariableDeclaration", - "src": "251:12:1", - "value": - { - "kind": "number", - "nativeSrc": "261:2:1", - "nodeType": "YulLiteral", - "src": "261:2:1", - "type": "", - "value": "32" - }, - "variables": - [ - { - "name": "_1", - "nativeSrc": "255:2:1", - "nodeType": "YulTypedName", - "src": "255:2:1", - "type": "" - } - ] - }, { "body": { - "nativeSrc": "308:16:1", + "nativeSrc": "287:16:1", "nodeType": "YulBlock", - "src": "308:16:1", + "src": "287:16:1", "statements": [ { @@ -226,17 +202,17 @@ [ { "kind": "number", - "nativeSrc": "317:1:1", + "nativeSrc": "296:1:1", "nodeType": "YulLiteral", - "src": "317:1:1", + "src": "296:1:1", "type": "", "value": "0" }, { "kind": "number", - "nativeSrc": "320:1:1", + "nativeSrc": "299:1:1", "nodeType": "YulLiteral", - "src": "320:1:1", + "src": "299:1:1", "type": "", "value": "0" } @@ -244,17 +220,17 @@ "functionName": { "name": "revert", - "nativeSrc": "310:6:1", + "nativeSrc": "289:6:1", "nodeType": "YulIdentifier", - "src": "310:6:1" + "src": "289:6:1" }, - "nativeSrc": "310:12:1", + "nativeSrc": "289:12:1", "nodeType": "YulFunctionCall", - "src": "310:12:1" + "src": "289:12:1" }, - "nativeSrc": "310:12:1", + "nativeSrc": "289:12:1", "nodeType": "YulExpressionStatement", - "src": "310:12:1" + "src": "289:12:1" } ] }, @@ -267,107 +243,85 @@ [ { "name": "dataEnd", - "nativeSrc": "283:7:1", + "nativeSrc": "262:7:1", "nodeType": "YulIdentifier", - "src": "283:7:1" + "src": "262:7:1" }, { "name": "headStart", - "nativeSrc": "292:9:1", + "nativeSrc": "271:9:1", "nodeType": "YulIdentifier", - "src": "292:9:1" + "src": "271:9:1" } ], "functionName": { "name": "sub", - "nativeSrc": "279:3:1", + "nativeSrc": "258:3:1", "nodeType": "YulIdentifier", - "src": "279:3:1" + "src": "258:3:1" }, - "nativeSrc": "279:23:1", + "nativeSrc": "258:23:1", "nodeType": "YulFunctionCall", - "src": "279:23:1" + "src": "258:23:1" }, { - "name": "_1", - "nativeSrc": "304:2:1", - "nodeType": "YulIdentifier", - "src": "304:2:1" + "kind": "number", + "nativeSrc": "283:2:1", + "nodeType": "YulLiteral", + "src": "283:2:1", + "type": "", + "value": "32" } ], "functionName": { "name": "slt", - "nativeSrc": "275:3:1", + "nativeSrc": "254:3:1", "nodeType": "YulIdentifier", - "src": "275:3:1" + "src": "254:3:1" }, - "nativeSrc": "275:32:1", + "nativeSrc": "254:32:1", "nodeType": "YulFunctionCall", - "src": "275:32:1" + "src": "254:32:1" }, - "nativeSrc": "272:52:1", + "nativeSrc": "251:52:1", "nodeType": "YulIf", - "src": "272:52:1" + "src": "251:52:1" }, { - "nativeSrc": "333:37:1", + "nativeSrc": "312:37:1", "nodeType": "YulVariableDeclaration", - "src": "333:37:1", + "src": "312:37:1", "value": { "arguments": [ { "name": "headStart", - "nativeSrc": "360:9:1", + "nativeSrc": "339:9:1", "nodeType": "YulIdentifier", - "src": "360:9:1" + "src": "339:9:1" } ], "functionName": { "name": "calldataload", - "nativeSrc": "347:12:1", + "nativeSrc": "326:12:1", "nodeType": "YulIdentifier", - "src": "347:12:1" + "src": "326:12:1" }, - "nativeSrc": "347:23:1", + "nativeSrc": "326:23:1", "nodeType": "YulFunctionCall", - "src": "347:23:1" + "src": "326:23:1" }, "variables": [ { "name": "offset", - "nativeSrc": "337:6:1", - "nodeType": "YulTypedName", - "src": "337:6:1", - "type": "" - } - ] - }, - { - "nativeSrc": "379:28:1", - "nodeType": "YulVariableDeclaration", - "src": "379:28:1", - "value": - { - "kind": "number", - "nativeSrc": "389:18:1", - "nodeType": "YulLiteral", - "src": "389:18:1", - "type": "", - "value": "0xffffffffffffffff" - }, - "variables": - [ - { - "name": "_2", - "nativeSrc": "383:2:1", + "nativeSrc": "316:6:1", "nodeType": "YulTypedName", - "src": "383:2:1", + "src": "316:6:1", "type": "" } ] @@ -375,9 +329,9 @@ { "body": { - "nativeSrc": "434:16:1", + "nativeSrc": "392:16:1", "nodeType": "YulBlock", - "src": "434:16:1", + "src": "392:16:1", "statements": [ { @@ -387,17 +341,17 @@ [ { "kind": "number", - "nativeSrc": "443:1:1", + "nativeSrc": "401:1:1", "nodeType": "YulLiteral", - "src": "443:1:1", + "src": "401:1:1", "type": "", "value": "0" }, { "kind": "number", - "nativeSrc": "446:1:1", + "nativeSrc": "404:1:1", "nodeType": "YulLiteral", - "src": "446:1:1", + "src": "404:1:1", "type": "", "value": "0" } @@ -405,17 +359,17 @@ "functionName": { "name": "revert", - "nativeSrc": "436:6:1", + "nativeSrc": "394:6:1", "nodeType": "YulIdentifier", - "src": "436:6:1" + "src": "394:6:1" }, - "nativeSrc": "436:12:1", + "nativeSrc": "394:12:1", "nodeType": "YulFunctionCall", - "src": "436:12:1" + "src": "394:12:1" }, - "nativeSrc": "436:12:1", + "nativeSrc": "394:12:1", "nodeType": "YulExpressionStatement", - "src": "436:12:1" + "src": "394:12:1" } ] }, @@ -425,71 +379,73 @@ [ { "name": "offset", - "nativeSrc": "422:6:1", + "nativeSrc": "364:6:1", "nodeType": "YulIdentifier", - "src": "422:6:1" + "src": "364:6:1" }, { - "name": "_2", - "nativeSrc": "430:2:1", - "nodeType": "YulIdentifier", - "src": "430:2:1" + "kind": "number", + "nativeSrc": "372:18:1", + "nodeType": "YulLiteral", + "src": "372:18:1", + "type": "", + "value": "0xffffffffffffffff" } ], "functionName": { "name": "gt", - "nativeSrc": "419:2:1", + "nativeSrc": "361:2:1", "nodeType": "YulIdentifier", - "src": "419:2:1" + "src": "361:2:1" }, - "nativeSrc": "419:14:1", + "nativeSrc": "361:30:1", "nodeType": "YulFunctionCall", - "src": "419:14:1" + "src": "361:30:1" }, - "nativeSrc": "416:34:1", + "nativeSrc": "358:50:1", "nodeType": "YulIf", - "src": "416:34:1" + "src": "358:50:1" }, { - "nativeSrc": "459:32:1", + "nativeSrc": "417:32:1", "nodeType": "YulVariableDeclaration", - "src": "459:32:1", + "src": "417:32:1", "value": { "arguments": [ { "name": "headStart", - "nativeSrc": "473:9:1", + "nativeSrc": "431:9:1", "nodeType": "YulIdentifier", - "src": "473:9:1" + "src": "431:9:1" }, { "name": "offset", - "nativeSrc": "484:6:1", + "nativeSrc": "442:6:1", "nodeType": "YulIdentifier", - "src": "484:6:1" + "src": "442:6:1" } ], "functionName": { "name": "add", - "nativeSrc": "469:3:1", + "nativeSrc": "427:3:1", "nodeType": "YulIdentifier", - "src": "469:3:1" + "src": "427:3:1" }, - "nativeSrc": "469:22:1", + "nativeSrc": "427:22:1", "nodeType": "YulFunctionCall", - "src": "469:22:1" + "src": "427:22:1" }, "variables": [ { - "name": "_3", - "nativeSrc": "463:2:1", + "name": "_1", + "nativeSrc": "421:2:1", "nodeType": "YulTypedName", - "src": "463:2:1", + "src": "421:2:1", "type": "" } ] @@ -497,9 +453,9 @@ { "body": { - "nativeSrc": "539:16:1", + "nativeSrc": "497:16:1", "nodeType": "YulBlock", - "src": "539:16:1", + "src": "497:16:1", "statements": [ { @@ -509,17 +465,17 @@ [ { "kind": "number", - "nativeSrc": "548:1:1", + "nativeSrc": "506:1:1", "nodeType": "YulLiteral", - "src": "548:1:1", + "src": "506:1:1", "type": "", "value": "0" }, { "kind": "number", - "nativeSrc": "551:1:1", + "nativeSrc": "509:1:1", "nodeType": "YulLiteral", - "src": "551:1:1", + "src": "509:1:1", "type": "", "value": "0" } @@ -527,17 +483,17 @@ "functionName": { "name": "revert", - "nativeSrc": "541:6:1", + "nativeSrc": "499:6:1", "nodeType": "YulIdentifier", - "src": "541:6:1" + "src": "499:6:1" }, - "nativeSrc": "541:12:1", + "nativeSrc": "499:12:1", "nodeType": "YulFunctionCall", - "src": "541:12:1" + "src": "499:12:1" }, - "nativeSrc": "541:12:1", + "nativeSrc": "499:12:1", "nodeType": "YulExpressionStatement", - "src": "541:12:1" + "src": "499:12:1" } ] }, @@ -552,16 +508,16 @@ "arguments": [ { - "name": "_3", - "nativeSrc": "518:2:1", + "name": "_1", + "nativeSrc": "476:2:1", "nodeType": "YulIdentifier", - "src": "518:2:1" + "src": "476:2:1" }, { "kind": "number", - "nativeSrc": "522:4:1", + "nativeSrc": "480:4:1", "nodeType": "YulLiteral", - "src": "522:4:1", + "src": "480:4:1", "type": "", "value": "0x1f" } @@ -569,81 +525,81 @@ "functionName": { "name": "add", - "nativeSrc": "514:3:1", + "nativeSrc": "472:3:1", "nodeType": "YulIdentifier", - "src": "514:3:1" + "src": "472:3:1" }, - "nativeSrc": "514:13:1", + "nativeSrc": "472:13:1", "nodeType": "YulFunctionCall", - "src": "514:13:1" + "src": "472:13:1" }, { "name": "dataEnd", - "nativeSrc": "529:7:1", + "nativeSrc": "487:7:1", "nodeType": "YulIdentifier", - "src": "529:7:1" + "src": "487:7:1" } ], "functionName": { "name": "slt", - "nativeSrc": "510:3:1", + "nativeSrc": "468:3:1", "nodeType": "YulIdentifier", - "src": "510:3:1" + "src": "468:3:1" }, - "nativeSrc": "510:27:1", + "nativeSrc": "468:27:1", "nodeType": "YulFunctionCall", - "src": "510:27:1" + "src": "468:27:1" } ], "functionName": { "name": "iszero", - "nativeSrc": "503:6:1", + "nativeSrc": "461:6:1", "nodeType": "YulIdentifier", - "src": "503:6:1" + "src": "461:6:1" }, - "nativeSrc": "503:35:1", + "nativeSrc": "461:35:1", "nodeType": "YulFunctionCall", - "src": "503:35:1" + "src": "461:35:1" }, - "nativeSrc": "500:55:1", + "nativeSrc": "458:55:1", "nodeType": "YulIf", - "src": "500:55:1" + "src": "458:55:1" }, { - "nativeSrc": "564:26:1", + "nativeSrc": "522:26:1", "nodeType": "YulVariableDeclaration", - "src": "564:26:1", + "src": "522:26:1", "value": { "arguments": [ { - "name": "_3", - "nativeSrc": "587:2:1", + "name": "_1", + "nativeSrc": "545:2:1", "nodeType": "YulIdentifier", - "src": "587:2:1" + "src": "545:2:1" } ], "functionName": { "name": "calldataload", - "nativeSrc": "574:12:1", + "nativeSrc": "532:12:1", "nodeType": "YulIdentifier", - "src": "574:12:1" + "src": "532:12:1" }, - "nativeSrc": "574:16:1", + "nativeSrc": "532:16:1", "nodeType": "YulFunctionCall", - "src": "574:16:1" + "src": "532:16:1" }, "variables": [ { - "name": "_4", - "nativeSrc": "568:2:1", + "name": "_2", + "nativeSrc": "526:2:1", "nodeType": "YulTypedName", - "src": "568:2:1", + "src": "526:2:1", "type": "" } ] @@ -651,9 +607,9 @@ { "body": { - "nativeSrc": "613:22:1", + "nativeSrc": "587:22:1", "nodeType": "YulBlock", - "src": "613:22:1", + "src": "587:22:1", "statements": [ { @@ -663,17 +619,17 @@ "functionName": { "name": "panic_error_0x41", - "nativeSrc": "615:16:1", + "nativeSrc": "589:16:1", "nodeType": "YulIdentifier", - "src": "615:16:1" + "src": "589:16:1" }, - "nativeSrc": "615:18:1", + "nativeSrc": "589:18:1", "nodeType": "YulFunctionCall", - "src": "615:18:1" + "src": "589:18:1" }, - "nativeSrc": "615:18:1", + "nativeSrc": "589:18:1", "nodeType": "YulExpressionStatement", - "src": "615:18:1" + "src": "589:18:1" } ] }, @@ -682,91 +638,93 @@ "arguments": [ { - "name": "_4", - "nativeSrc": "605:2:1", + "name": "_2", + "nativeSrc": "563:2:1", "nodeType": "YulIdentifier", - "src": "605:2:1" + "src": "563:2:1" }, { - "name": "_2", - "nativeSrc": "609:2:1", - "nodeType": "YulIdentifier", - "src": "609:2:1" + "kind": "number", + "nativeSrc": "567:18:1", + "nodeType": "YulLiteral", + "src": "567:18:1", + "type": "", + "value": "0xffffffffffffffff" } ], "functionName": { "name": "gt", - "nativeSrc": "602:2:1", + "nativeSrc": "560:2:1", "nodeType": "YulIdentifier", - "src": "602:2:1" + "src": "560:2:1" }, - "nativeSrc": "602:10:1", + "nativeSrc": "560:26:1", "nodeType": "YulFunctionCall", - "src": "602:10:1" + "src": "560:26:1" }, - "nativeSrc": "599:36:1", + "nativeSrc": "557:52:1", "nodeType": "YulIf", - "src": "599:36:1" + "src": "557:52:1" }, { - "nativeSrc": "644:20:1", + "nativeSrc": "618:20:1", "nodeType": "YulVariableDeclaration", - "src": "644:20:1", + "src": "618:20:1", "value": { "arguments": [ { "kind": "number", - "nativeSrc": "658:1:1", + "nativeSrc": "632:1:1", "nodeType": "YulLiteral", - "src": "658:1:1", + "src": "632:1:1", "type": "", "value": "5" }, { - "name": "_4", - "nativeSrc": "661:2:1", + "name": "_2", + "nativeSrc": "635:2:1", "nodeType": "YulIdentifier", - "src": "661:2:1" + "src": "635:2:1" } ], "functionName": { "name": "shl", - "nativeSrc": "654:3:1", + "nativeSrc": "628:3:1", "nodeType": "YulIdentifier", - "src": "654:3:1" + "src": "628:3:1" }, - "nativeSrc": "654:10:1", + "nativeSrc": "628:10:1", "nodeType": "YulFunctionCall", - "src": "654:10:1" + "src": "628:10:1" }, "variables": [ { - "name": "_5", - "nativeSrc": "648:2:1", + "name": "_3", + "nativeSrc": "622:2:1", "nodeType": "YulTypedName", - "src": "648:2:1", + "src": "622:2:1", "type": "" } ] }, { - "nativeSrc": "673:23:1", + "nativeSrc": "647:23:1", "nodeType": "YulVariableDeclaration", - "src": "673:23:1", + "src": "647:23:1", "value": { "arguments": [ { "kind": "number", - "nativeSrc": "693:2:1", + "nativeSrc": "667:2:1", "nodeType": "YulLiteral", - "src": "693:2:1", + "src": "667:2:1", "type": "", "value": "64" } @@ -774,38 +732,38 @@ "functionName": { "name": "mload", - "nativeSrc": "687:5:1", + "nativeSrc": "661:5:1", "nodeType": "YulIdentifier", - "src": "687:5:1" + "src": "661:5:1" }, - "nativeSrc": "687:9:1", + "nativeSrc": "661:9:1", "nodeType": "YulFunctionCall", - "src": "687:9:1" + "src": "661:9:1" }, "variables": [ { "name": "memPtr", - "nativeSrc": "677:6:1", + "nativeSrc": "651:6:1", "nodeType": "YulTypedName", - "src": "677:6:1", + "src": "651:6:1", "type": "" } ] }, { - "nativeSrc": "705:56:1", + "nativeSrc": "679:56:1", "nodeType": "YulVariableDeclaration", - "src": "705:56:1", + "src": "679:56:1", "value": { "arguments": [ { "name": "memPtr", - "nativeSrc": "727:6:1", + "nativeSrc": "701:6:1", "nodeType": "YulIdentifier", - "src": "727:6:1" + "src": "701:6:1" }, { "arguments": @@ -814,16 +772,16 @@ "arguments": [ { - "name": "_5", - "nativeSrc": "743:2:1", + "name": "_3", + "nativeSrc": "717:2:1", "nodeType": "YulIdentifier", - "src": "743:2:1" + "src": "717:2:1" }, { "kind": "number", - "nativeSrc": "747:2:1", + "nativeSrc": "721:2:1", "nodeType": "YulLiteral", - "src": "747:2:1", + "src": "721:2:1", "type": "", "value": "63" } @@ -831,22 +789,22 @@ "functionName": { "name": "add", - "nativeSrc": "739:3:1", + "nativeSrc": "713:3:1", "nodeType": "YulIdentifier", - "src": "739:3:1" + "src": "713:3:1" }, - "nativeSrc": "739:11:1", + "nativeSrc": "713:11:1", "nodeType": "YulFunctionCall", - "src": "739:11:1" + "src": "713:11:1" }, { "arguments": [ { "kind": "number", - "nativeSrc": "756:2:1", + "nativeSrc": "730:2:1", "nodeType": "YulLiteral", - "src": "756:2:1", + "src": "730:2:1", "type": "", "value": "31" } @@ -854,45 +812,45 @@ "functionName": { "name": "not", - "nativeSrc": "752:3:1", + "nativeSrc": "726:3:1", "nodeType": "YulIdentifier", - "src": "752:3:1" + "src": "726:3:1" }, - "nativeSrc": "752:7:1", + "nativeSrc": "726:7:1", "nodeType": "YulFunctionCall", - "src": "752:7:1" + "src": "726:7:1" } ], "functionName": { "name": "and", - "nativeSrc": "735:3:1", + "nativeSrc": "709:3:1", "nodeType": "YulIdentifier", - "src": "735:3:1" + "src": "709:3:1" }, - "nativeSrc": "735:25:1", + "nativeSrc": "709:25:1", "nodeType": "YulFunctionCall", - "src": "735:25:1" + "src": "709:25:1" } ], "functionName": { "name": "add", - "nativeSrc": "723:3:1", + "nativeSrc": "697:3:1", "nodeType": "YulIdentifier", - "src": "723:3:1" + "src": "697:3:1" }, - "nativeSrc": "723:38:1", + "nativeSrc": "697:38:1", "nodeType": "YulFunctionCall", - "src": "723:38:1" + "src": "697:38:1" }, "variables": [ { "name": "newFreePtr", - "nativeSrc": "709:10:1", + "nativeSrc": "683:10:1", "nodeType": "YulTypedName", - "src": "709:10:1", + "src": "683:10:1", "type": "" } ] @@ -900,9 +858,9 @@ { "body": { - "nativeSrc": "820:22:1", + "nativeSrc": "810:22:1", "nodeType": "YulBlock", - "src": "820:22:1", + "src": "810:22:1", "statements": [ { @@ -912,17 +870,17 @@ "functionName": { "name": "panic_error_0x41", - "nativeSrc": "822:16:1", + "nativeSrc": "812:16:1", "nodeType": "YulIdentifier", - "src": "822:16:1" + "src": "812:16:1" }, - "nativeSrc": "822:18:1", + "nativeSrc": "812:18:1", "nodeType": "YulFunctionCall", - "src": "822:18:1" + "src": "812:18:1" }, - "nativeSrc": "822:18:1", + "nativeSrc": "812:18:1", "nodeType": "YulExpressionStatement", - "src": "822:18:1" + "src": "812:18:1" } ] }, @@ -935,70 +893,72 @@ [ { "name": "newFreePtr", - "nativeSrc": "779:10:1", + "nativeSrc": "753:10:1", "nodeType": "YulIdentifier", - "src": "779:10:1" + "src": "753:10:1" }, { - "name": "_2", - "nativeSrc": "791:2:1", - "nodeType": "YulIdentifier", - "src": "791:2:1" + "kind": "number", + "nativeSrc": "765:18:1", + "nodeType": "YulLiteral", + "src": "765:18:1", + "type": "", + "value": "0xffffffffffffffff" } ], "functionName": { "name": "gt", - "nativeSrc": "776:2:1", + "nativeSrc": "750:2:1", "nodeType": "YulIdentifier", - "src": "776:2:1" + "src": "750:2:1" }, - "nativeSrc": "776:18:1", + "nativeSrc": "750:34:1", "nodeType": "YulFunctionCall", - "src": "776:18:1" + "src": "750:34:1" }, { "arguments": [ { "name": "newFreePtr", - "nativeSrc": "799:10:1", + "nativeSrc": "789:10:1", "nodeType": "YulIdentifier", - "src": "799:10:1" + "src": "789:10:1" }, { "name": "memPtr", - "nativeSrc": "811:6:1", + "nativeSrc": "801:6:1", "nodeType": "YulIdentifier", - "src": "811:6:1" + "src": "801:6:1" } ], "functionName": { "name": "lt", - "nativeSrc": "796:2:1", + "nativeSrc": "786:2:1", "nodeType": "YulIdentifier", - "src": "796:2:1" + "src": "786:2:1" }, - "nativeSrc": "796:22:1", + "nativeSrc": "786:22:1", "nodeType": "YulFunctionCall", - "src": "796:22:1" + "src": "786:22:1" } ], "functionName": { "name": "or", - "nativeSrc": "773:2:1", + "nativeSrc": "747:2:1", "nodeType": "YulIdentifier", - "src": "773:2:1" + "src": "747:2:1" }, - "nativeSrc": "773:46:1", + "nativeSrc": "747:62:1", "nodeType": "YulFunctionCall", - "src": "773:46:1" + "src": "747:62:1" }, - "nativeSrc": "770:72:1", + "nativeSrc": "744:88:1", "nodeType": "YulIf", - "src": "770:72:1" + "src": "744:88:1" }, { "expression": @@ -1007,52 +967,52 @@ [ { "kind": "number", - "nativeSrc": "858:2:1", + "nativeSrc": "848:2:1", "nodeType": "YulLiteral", - "src": "858:2:1", + "src": "848:2:1", "type": "", "value": "64" }, { "name": "newFreePtr", - "nativeSrc": "862:10:1", + "nativeSrc": "852:10:1", "nodeType": "YulIdentifier", - "src": "862:10:1" + "src": "852:10:1" } ], "functionName": { "name": "mstore", - "nativeSrc": "851:6:1", + "nativeSrc": "841:6:1", "nodeType": "YulIdentifier", - "src": "851:6:1" + "src": "841:6:1" }, - "nativeSrc": "851:22:1", + "nativeSrc": "841:22:1", "nodeType": "YulFunctionCall", - "src": "851:22:1" + "src": "841:22:1" }, - "nativeSrc": "851:22:1", + "nativeSrc": "841:22:1", "nodeType": "YulExpressionStatement", - "src": "851:22:1" + "src": "841:22:1" }, { - "nativeSrc": "882:17:1", + "nativeSrc": "872:17:1", "nodeType": "YulVariableDeclaration", - "src": "882:17:1", + "src": "872:17:1", "value": { "name": "memPtr", - "nativeSrc": "893:6:1", + "nativeSrc": "883:6:1", "nodeType": "YulIdentifier", - "src": "893:6:1" + "src": "883:6:1" }, "variables": [ { "name": "dst", - "nativeSrc": "886:3:1", + "nativeSrc": "876:3:1", "nodeType": "YulTypedName", - "src": "886:3:1", + "src": "876:3:1", "type": "" } ] @@ -1064,78 +1024,80 @@ [ { "name": "memPtr", - "nativeSrc": "915:6:1", + "nativeSrc": "905:6:1", "nodeType": "YulIdentifier", - "src": "915:6:1" + "src": "905:6:1" }, { - "name": "_4", - "nativeSrc": "923:2:1", + "name": "_2", + "nativeSrc": "913:2:1", "nodeType": "YulIdentifier", - "src": "923:2:1" + "src": "913:2:1" } ], "functionName": { "name": "mstore", - "nativeSrc": "908:6:1", + "nativeSrc": "898:6:1", "nodeType": "YulIdentifier", - "src": "908:6:1" + "src": "898:6:1" }, - "nativeSrc": "908:18:1", + "nativeSrc": "898:18:1", "nodeType": "YulFunctionCall", - "src": "908:18:1" + "src": "898:18:1" }, - "nativeSrc": "908:18:1", + "nativeSrc": "898:18:1", "nodeType": "YulExpressionStatement", - "src": "908:18:1" + "src": "898:18:1" }, { - "nativeSrc": "935:22:1", + "nativeSrc": "925:22:1", "nodeType": "YulAssignment", - "src": "935:22:1", + "src": "925:22:1", "value": { "arguments": [ { "name": "memPtr", - "nativeSrc": "946:6:1", + "nativeSrc": "936:6:1", "nodeType": "YulIdentifier", - "src": "946:6:1" + "src": "936:6:1" }, { - "name": "_1", - "nativeSrc": "954:2:1", - "nodeType": "YulIdentifier", - "src": "954:2:1" + "kind": "number", + "nativeSrc": "944:2:1", + "nodeType": "YulLiteral", + "src": "944:2:1", + "type": "", + "value": "32" } ], "functionName": { "name": "add", - "nativeSrc": "942:3:1", + "nativeSrc": "932:3:1", "nodeType": "YulIdentifier", - "src": "942:3:1" + "src": "932:3:1" }, - "nativeSrc": "942:15:1", + "nativeSrc": "932:15:1", "nodeType": "YulFunctionCall", - "src": "942:15:1" + "src": "932:15:1" }, "variableNames": [ { "name": "dst", - "nativeSrc": "935:3:1", + "nativeSrc": "925:3:1", "nodeType": "YulIdentifier", - "src": "935:3:1" + "src": "925:3:1" } ] }, { - "nativeSrc": "966:34:1", + "nativeSrc": "956:34:1", "nodeType": "YulVariableDeclaration", - "src": "966:34:1", + "src": "956:34:1", "value": { "arguments": @@ -1144,54 +1106,56 @@ "arguments": [ { - "name": "_3", - "nativeSrc": "988:2:1", + "name": "_1", + "nativeSrc": "978:2:1", "nodeType": "YulIdentifier", - "src": "988:2:1" + "src": "978:2:1" }, { - "name": "_5", - "nativeSrc": "992:2:1", + "name": "_3", + "nativeSrc": "982:2:1", "nodeType": "YulIdentifier", - "src": "992:2:1" + "src": "982:2:1" } ], "functionName": { "name": "add", - "nativeSrc": "984:3:1", + "nativeSrc": "974:3:1", "nodeType": "YulIdentifier", - "src": "984:3:1" + "src": "974:3:1" }, - "nativeSrc": "984:11:1", + "nativeSrc": "974:11:1", "nodeType": "YulFunctionCall", - "src": "984:11:1" + "src": "974:11:1" }, { - "name": "_1", - "nativeSrc": "997:2:1", - "nodeType": "YulIdentifier", - "src": "997:2:1" + "kind": "number", + "nativeSrc": "987:2:1", + "nodeType": "YulLiteral", + "src": "987:2:1", + "type": "", + "value": "32" } ], "functionName": { "name": "add", - "nativeSrc": "980:3:1", + "nativeSrc": "970:3:1", "nodeType": "YulIdentifier", - "src": "980:3:1" + "src": "970:3:1" }, - "nativeSrc": "980:20:1", + "nativeSrc": "970:20:1", "nodeType": "YulFunctionCall", - "src": "980:20:1" + "src": "970:20:1" }, "variables": [ { "name": "srcEnd", - "nativeSrc": "970:6:1", + "nativeSrc": "960:6:1", "nodeType": "YulTypedName", - "src": "970:6:1", + "src": "960:6:1", "type": "" } ] @@ -1199,9 +1163,9 @@ { "body": { - "nativeSrc": "1032:16:1", + "nativeSrc": "1022:16:1", "nodeType": "YulBlock", - "src": "1032:16:1", + "src": "1022:16:1", "statements": [ { @@ -1211,17 +1175,17 @@ [ { "kind": "number", - "nativeSrc": "1041:1:1", + "nativeSrc": "1031:1:1", "nodeType": "YulLiteral", - "src": "1041:1:1", + "src": "1031:1:1", "type": "", "value": "0" }, { "kind": "number", - "nativeSrc": "1044:1:1", + "nativeSrc": "1034:1:1", "nodeType": "YulLiteral", - "src": "1044:1:1", + "src": "1034:1:1", "type": "", "value": "0" } @@ -1229,17 +1193,17 @@ "functionName": { "name": "revert", - "nativeSrc": "1034:6:1", + "nativeSrc": "1024:6:1", "nodeType": "YulIdentifier", - "src": "1034:6:1" + "src": "1024:6:1" }, - "nativeSrc": "1034:12:1", + "nativeSrc": "1024:12:1", "nodeType": "YulFunctionCall", - "src": "1034:12:1" + "src": "1024:12:1" }, - "nativeSrc": "1034:12:1", + "nativeSrc": "1024:12:1", "nodeType": "YulExpressionStatement", - "src": "1034:12:1" + "src": "1024:12:1" } ] }, @@ -1249,71 +1213,73 @@ [ { "name": "srcEnd", - "nativeSrc": "1015:6:1", + "nativeSrc": "1005:6:1", "nodeType": "YulIdentifier", - "src": "1015:6:1" + "src": "1005:6:1" }, { "name": "dataEnd", - "nativeSrc": "1023:7:1", + "nativeSrc": "1013:7:1", "nodeType": "YulIdentifier", - "src": "1023:7:1" + "src": "1013:7:1" } ], "functionName": { "name": "gt", - "nativeSrc": "1012:2:1", + "nativeSrc": "1002:2:1", "nodeType": "YulIdentifier", - "src": "1012:2:1" + "src": "1002:2:1" }, - "nativeSrc": "1012:19:1", + "nativeSrc": "1002:19:1", "nodeType": "YulFunctionCall", - "src": "1012:19:1" + "src": "1002:19:1" }, - "nativeSrc": "1009:39:1", + "nativeSrc": "999:39:1", "nodeType": "YulIf", - "src": "1009:39:1" + "src": "999:39:1" }, { - "nativeSrc": "1057:22:1", + "nativeSrc": "1047:22:1", "nodeType": "YulVariableDeclaration", - "src": "1057:22:1", + "src": "1047:22:1", "value": { "arguments": [ { - "name": "_3", - "nativeSrc": "1072:2:1", + "name": "_1", + "nativeSrc": "1062:2:1", "nodeType": "YulIdentifier", - "src": "1072:2:1" + "src": "1062:2:1" }, { - "name": "_1", - "nativeSrc": "1076:2:1", - "nodeType": "YulIdentifier", - "src": "1076:2:1" + "kind": "number", + "nativeSrc": "1066:2:1", + "nodeType": "YulLiteral", + "src": "1066:2:1", + "type": "", + "value": "32" } ], "functionName": { "name": "add", - "nativeSrc": "1068:3:1", + "nativeSrc": "1058:3:1", "nodeType": "YulIdentifier", - "src": "1068:3:1" + "src": "1058:3:1" }, - "nativeSrc": "1068:11:1", + "nativeSrc": "1058:11:1", "nodeType": "YulFunctionCall", - "src": "1068:11:1" + "src": "1058:11:1" }, "variables": [ { "name": "src", - "nativeSrc": "1061:3:1", + "nativeSrc": "1051:3:1", "nodeType": "YulTypedName", - "src": "1061:3:1", + "src": "1051:3:1", "type": "" } ] @@ -1321,11 +1287,71 @@ { "body": { - "nativeSrc": "1144:86:1", + "nativeSrc": "1134:140:1", "nodeType": "YulBlock", - "src": "1144:86:1", + "src": "1134:140:1", "statements": [ + { + "nativeSrc": "1148:14:1", + "nodeType": "YulVariableDeclaration", + "src": "1148:14:1", + "value": + { + "kind": "number", + "nativeSrc": "1161:1:1", + "nodeType": "YulLiteral", + "src": "1161:1:1", + "type": "", + "value": "0" + }, + "variables": + [ + { + "name": "value", + "nativeSrc": "1152:5:1", + "nodeType": "YulTypedName", + "src": "1152:5:1", + "type": "" + } + ] + }, + { + "nativeSrc": "1175:26:1", + "nodeType": "YulAssignment", + "src": "1175:26:1", + "value": + { + "arguments": + [ + { + "name": "src", + "nativeSrc": "1197:3:1", + "nodeType": "YulIdentifier", + "src": "1197:3:1" + } + ], + "functionName": + { + "name": "calldataload", + "nativeSrc": "1184:12:1", + "nodeType": "YulIdentifier", + "src": "1184:12:1" + }, + "nativeSrc": "1184:17:1", + "nodeType": "YulFunctionCall", + "src": "1184:17:1" + }, + "variableNames": + [ + { + "name": "value", + "nativeSrc": "1175:5:1", + "nodeType": "YulIdentifier", + "src": "1175:5:1" + } + ] + }, { "expression": { @@ -1333,86 +1359,73 @@ [ { "name": "dst", - "nativeSrc": "1165:3:1", + "nativeSrc": "1221:3:1", "nodeType": "YulIdentifier", - "src": "1165:3:1" + "src": "1221:3:1" }, { - "arguments": - [ - { - "name": "src", - "nativeSrc": "1183:3:1", - "nodeType": "YulIdentifier", - "src": "1183:3:1" - } - ], - "functionName": - { - "name": "calldataload", - "nativeSrc": "1170:12:1", - "nodeType": "YulIdentifier", - "src": "1170:12:1" - }, - "nativeSrc": "1170:17:1", - "nodeType": "YulFunctionCall", - "src": "1170:17:1" + "name": "value", + "nativeSrc": "1226:5:1", + "nodeType": "YulIdentifier", + "src": "1226:5:1" } ], "functionName": { "name": "mstore", - "nativeSrc": "1158:6:1", + "nativeSrc": "1214:6:1", "nodeType": "YulIdentifier", - "src": "1158:6:1" + "src": "1214:6:1" }, - "nativeSrc": "1158:30:1", + "nativeSrc": "1214:18:1", "nodeType": "YulFunctionCall", - "src": "1158:30:1" + "src": "1214:18:1" }, - "nativeSrc": "1158:30:1", + "nativeSrc": "1214:18:1", "nodeType": "YulExpressionStatement", - "src": "1158:30:1" + "src": "1214:18:1" }, { - "nativeSrc": "1201:19:1", + "nativeSrc": "1245:19:1", "nodeType": "YulAssignment", - "src": "1201:19:1", + "src": "1245:19:1", "value": { "arguments": [ { "name": "dst", - "nativeSrc": "1212:3:1", + "nativeSrc": "1256:3:1", "nodeType": "YulIdentifier", - "src": "1212:3:1" + "src": "1256:3:1" }, { - "name": "_1", - "nativeSrc": "1217:2:1", - "nodeType": "YulIdentifier", - "src": "1217:2:1" + "kind": "number", + "nativeSrc": "1261:2:1", + "nodeType": "YulLiteral", + "src": "1261:2:1", + "type": "", + "value": "32" } ], "functionName": { "name": "add", - "nativeSrc": "1208:3:1", + "nativeSrc": "1252:3:1", "nodeType": "YulIdentifier", - "src": "1208:3:1" + "src": "1252:3:1" }, - "nativeSrc": "1208:12:1", + "nativeSrc": "1252:12:1", "nodeType": "YulFunctionCall", - "src": "1208:12:1" + "src": "1252:12:1" }, "variableNames": [ { "name": "dst", - "nativeSrc": "1201:3:1", + "nativeSrc": "1245:3:1", "nodeType": "YulIdentifier", - "src": "1201:3:1" + "src": "1245:3:1" } ] } @@ -1424,76 +1437,78 @@ [ { "name": "src", - "nativeSrc": "1099:3:1", + "nativeSrc": "1089:3:1", "nodeType": "YulIdentifier", - "src": "1099:3:1" + "src": "1089:3:1" }, { "name": "srcEnd", - "nativeSrc": "1104:6:1", + "nativeSrc": "1094:6:1", "nodeType": "YulIdentifier", - "src": "1104:6:1" + "src": "1094:6:1" } ], "functionName": { "name": "lt", - "nativeSrc": "1096:2:1", + "nativeSrc": "1086:2:1", "nodeType": "YulIdentifier", - "src": "1096:2:1" + "src": "1086:2:1" }, - "nativeSrc": "1096:15:1", + "nativeSrc": "1086:15:1", "nodeType": "YulFunctionCall", - "src": "1096:15:1" + "src": "1086:15:1" }, - "nativeSrc": "1088:142:1", + "nativeSrc": "1078:196:1", "nodeType": "YulForLoop", "post": { - "nativeSrc": "1112:23:1", + "nativeSrc": "1102:23:1", "nodeType": "YulBlock", - "src": "1112:23:1", + "src": "1102:23:1", "statements": [ { - "nativeSrc": "1114:19:1", + "nativeSrc": "1104:19:1", "nodeType": "YulAssignment", - "src": "1114:19:1", + "src": "1104:19:1", "value": { "arguments": [ { "name": "src", - "nativeSrc": "1125:3:1", + "nativeSrc": "1115:3:1", "nodeType": "YulIdentifier", - "src": "1125:3:1" + "src": "1115:3:1" }, { - "name": "_1", - "nativeSrc": "1130:2:1", - "nodeType": "YulIdentifier", - "src": "1130:2:1" + "kind": "number", + "nativeSrc": "1120:2:1", + "nodeType": "YulLiteral", + "src": "1120:2:1", + "type": "", + "value": "32" } ], "functionName": { "name": "add", - "nativeSrc": "1121:3:1", + "nativeSrc": "1111:3:1", "nodeType": "YulIdentifier", - "src": "1121:3:1" + "src": "1111:3:1" }, - "nativeSrc": "1121:12:1", + "nativeSrc": "1111:12:1", "nodeType": "YulFunctionCall", - "src": "1121:12:1" + "src": "1111:12:1" }, "variableNames": [ { "name": "src", - "nativeSrc": "1114:3:1", + "nativeSrc": "1104:3:1", "nodeType": "YulIdentifier", - "src": "1114:3:1" + "src": "1104:3:1" } ] } @@ -1501,38 +1516,38 @@ }, "pre": { - "nativeSrc": "1092:3:1", + "nativeSrc": "1082:3:1", "nodeType": "YulBlock", - "src": "1092:3:1", + "src": "1082:3:1", "statements": [] }, - "src": "1088:142:1" + "src": "1078:196:1" }, { - "nativeSrc": "1239:16:1", + "nativeSrc": "1283:16:1", "nodeType": "YulAssignment", - "src": "1239:16:1", + "src": "1283:16:1", "value": { "name": "memPtr", - "nativeSrc": "1249:6:1", + "nativeSrc": "1293:6:1", "nodeType": "YulIdentifier", - "src": "1249:6:1" + "src": "1293:6:1" }, "variableNames": [ { "name": "value0", - "nativeSrc": "1239:6:1", + "nativeSrc": "1283:6:1", "nodeType": "YulIdentifier", - "src": "1239:6:1" + "src": "1283:6:1" } ] } ] }, "name": "abi_decode_tuple_t_array$_t_uint256_$dyn_memory_ptr", - "nativeSrc": "146:1115:1", + "nativeSrc": "146:1159:1", "nodeType": "YulFunctionDefinition", "parameters": [ @@ -1561,35 +1576,35 @@ "type": "" } ], - "src": "146:1115:1" + "src": "146:1159:1" }, { "body": { - "nativeSrc": "1367:76:1", + "nativeSrc": "1411:76:1", "nodeType": "YulBlock", - "src": "1367:76:1", + "src": "1411:76:1", "statements": [ { - "nativeSrc": "1377:26:1", + "nativeSrc": "1421:26:1", "nodeType": "YulAssignment", - "src": "1377:26:1", + "src": "1421:26:1", "value": { "arguments": [ { "name": "headStart", - "nativeSrc": "1389:9:1", + "nativeSrc": "1433:9:1", "nodeType": "YulIdentifier", - "src": "1389:9:1" + "src": "1433:9:1" }, { "kind": "number", - "nativeSrc": "1400:2:1", + "nativeSrc": "1444:2:1", "nodeType": "YulLiteral", - "src": "1400:2:1", + "src": "1444:2:1", "type": "", "value": "32" } @@ -1597,21 +1612,21 @@ "functionName": { "name": "add", - "nativeSrc": "1385:3:1", + "nativeSrc": "1429:3:1", "nodeType": "YulIdentifier", - "src": "1385:3:1" + "src": "1429:3:1" }, - "nativeSrc": "1385:18:1", + "nativeSrc": "1429:18:1", "nodeType": "YulFunctionCall", - "src": "1385:18:1" + "src": "1429:18:1" }, "variableNames": [ { "name": "tail", - "nativeSrc": "1377:4:1", + "nativeSrc": "1421:4:1", "nodeType": "YulIdentifier", - "src": "1377:4:1" + "src": "1421:4:1" } ] }, @@ -1622,51 +1637,51 @@ [ { "name": "headStart", - "nativeSrc": "1419:9:1", + "nativeSrc": "1463:9:1", "nodeType": "YulIdentifier", - "src": "1419:9:1" + "src": "1463:9:1" }, { "name": "value0", - "nativeSrc": "1430:6:1", + "nativeSrc": "1474:6:1", "nodeType": "YulIdentifier", - "src": "1430:6:1" + "src": "1474:6:1" } ], "functionName": { "name": "mstore", - "nativeSrc": "1412:6:1", + "nativeSrc": "1456:6:1", "nodeType": "YulIdentifier", - "src": "1412:6:1" + "src": "1456:6:1" }, - "nativeSrc": "1412:25:1", + "nativeSrc": "1456:25:1", "nodeType": "YulFunctionCall", - "src": "1412:25:1" + "src": "1456:25:1" }, - "nativeSrc": "1412:25:1", + "nativeSrc": "1456:25:1", "nodeType": "YulExpressionStatement", - "src": "1412:25:1" + "src": "1456:25:1" } ] }, "name": "abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed", - "nativeSrc": "1266:177:1", + "nativeSrc": "1310:177:1", "nodeType": "YulFunctionDefinition", "parameters": [ { "name": "headStart", - "nativeSrc": "1336:9:1", + "nativeSrc": "1380:9:1", "nodeType": "YulTypedName", - "src": "1336:9:1", + "src": "1380:9:1", "type": "" }, { "name": "value0", - "nativeSrc": "1347:6:1", + "nativeSrc": "1391:6:1", "nodeType": "YulTypedName", - "src": "1347:6:1", + "src": "1391:6:1", "type": "" } ], @@ -1674,13 +1689,13 @@ [ { "name": "tail", - "nativeSrc": "1358:4:1", + "nativeSrc": "1402:4:1", "nodeType": "YulTypedName", - "src": "1358:4:1", + "src": "1402:4:1", "type": "" } ], - "src": "1266:177:1" + "src": "1310:177:1" } ] }, @@ -1694,30 +1709,30 @@ } function abi_decode_tuple_t_array$_t_uint256_$dyn_memory_ptr(headStart, dataEnd) -> value0 { - let _1 := 32 - if slt(sub(dataEnd, headStart), _1) { revert(0, 0) } + if slt(sub(dataEnd, headStart), 32) { revert(0, 0) } let offset := calldataload(headStart) - let _2 := 0xffffffffffffffff - if gt(offset, _2) { revert(0, 0) } - let _3 := add(headStart, offset) - if iszero(slt(add(_3, 0x1f), dataEnd)) { revert(0, 0) } - let _4 := calldataload(_3) - if gt(_4, _2) { panic_error_0x41() } - let _5 := shl(5, _4) + if gt(offset, 0xffffffffffffffff) { revert(0, 0) } + let _1 := add(headStart, offset) + if iszero(slt(add(_1, 0x1f), dataEnd)) { revert(0, 0) } + let _2 := calldataload(_1) + if gt(_2, 0xffffffffffffffff) { panic_error_0x41() } + let _3 := shl(5, _2) let memPtr := mload(64) - let newFreePtr := add(memPtr, and(add(_5, 63), not(31))) - if or(gt(newFreePtr, _2), lt(newFreePtr, memPtr)) { panic_error_0x41() } + let newFreePtr := add(memPtr, and(add(_3, 63), not(31))) + if or(gt(newFreePtr, 0xffffffffffffffff), lt(newFreePtr, memPtr)) { panic_error_0x41() } mstore(64, newFreePtr) let dst := memPtr - mstore(memPtr, _4) - dst := add(memPtr, _1) - let srcEnd := add(add(_3, _5), _1) + mstore(memPtr, _2) + dst := add(memPtr, 32) + let srcEnd := add(add(_1, _3), 32) if gt(srcEnd, dataEnd) { revert(0, 0) } - let src := add(_3, _1) - for { } lt(src, srcEnd) { src := add(src, _1) } + let src := add(_1, 32) + for { } lt(src, srcEnd) { src := add(src, 32) } { - mstore(dst, calldataload(src)) - dst := add(dst, _1) + let value := 0 + value := calldataload(src) + mstore(dst, value) + dst := add(dst, 32) } value0 := memPtr } diff --git a/test/cmdlineTests/viair_subobject_optimization/output b/test/cmdlineTests/viair_subobject_optimization/output index 5090c282bb24..dafba2771c5d 100644 --- a/test/cmdlineTests/viair_subobject_optimization/output +++ b/test/cmdlineTests/viair_subobject_optimization/output @@ -119,53 +119,50 @@ sub_0: assembly { jumpi(tag_7, slt(add(not(0x03), calldatasize), 0x00)) /* "viair_subobject_optimization/input.sol":745:765 type(C).creationCode */ dataSize(sub_0) - /* "viair_subobject_optimization/input.sol":669:772 contract D {... */ - swap1 - not(0x1f) swap1 - dup2 + /* "viair_subobject_optimization/input.sol":669:772 contract D {... */ 0x3f - dup5 + dup3 add + not(0x1f) and dup2 add - swap2 + swap1 + 0xffffffffffffffff + dup3 + gt dup2 dup4 lt - 0xffffffffffffffff - dup5 - gt or tag_9 jumpi 0x40 - swap3 - dup4 + swap2 + dup3 mstore /* "viair_subobject_optimization/input.sol":745:765 type(C).creationCode */ - dup4 dup3 + dup2 mstore 0x20 - dup3 + dup2 add - swap4 + swap3 dataOffset(sub_0) - dup6 + dup5 codecopy /* "viair_subobject_optimization/input.sol":669:772 contract D {... */ - 0x1f - dup4 + dup2 mload - swap5 - dup6 - swap4 + swap3 + dup4 + swap2 /* "viair_subobject_optimization/input.sol":745:765 type(C).creationCode */ 0x20 /* "viair_subobject_optimization/input.sol":669:772 contract D {... */ - dup6 + dup4 mstore mload dup1 @@ -174,21 +171,23 @@ sub_0: assembly { /* "viair_subobject_optimization/input.sol":745:765 type(C).creationCode */ 0x20 /* "viair_subobject_optimization/input.sol":669:772 contract D {... */ - dup8 + dup6 add mstore - dup7 - dup7 + dup5 + dup5 add mcopy 0x00 - dup6 dup3 - dup7 + dup3 add + dup5 add mstore + 0x1f add + not(0x1f) and dup2 add diff --git a/test/libsolidity/syntaxTests/sizeLimits/combined_too_large_paris.sol b/test/libsolidity/syntaxTests/sizeLimits/combined_too_large_paris.sol index 0a97c87dfa9c..82a3415d0cbe 100644 --- a/test/libsolidity/syntaxTests/sizeLimits/combined_too_large_paris.sol +++ b/test/libsolidity/syntaxTests/sizeLimits/combined_too_large_paris.sol @@ -26,6 +26,6 @@ contract test { // ==== // EVMVersion: =paris // ---- -// Warning 5574: (0-27130): Contract code size is 27193 bytes and exceeds 24576 bytes (a limit introduced in Spurious Dragon). This contract may not be deployable on Mainnet. Consider enabling the optimizer (with a low "runs" value!), turning off revert strings, or using libraries. -// Warning 5574: (27132-27224): Contract code size is 27219 bytes and exceeds 24576 bytes (a limit introduced in Spurious Dragon). This contract may not be deployable on Mainnet. Consider enabling the optimizer (with a low "runs" value!), turning off revert strings, or using libraries. -// Warning 5574: (27226-27319): Contract code size is 27219 bytes and exceeds 24576 bytes (a limit introduced in Spurious Dragon). This contract may not be deployable on Mainnet. Consider enabling the optimizer (with a low "runs" value!), turning off revert strings, or using libraries. +// Warning 5574: (0-27130): Contract code size is 27192 bytes and exceeds 24576 bytes (a limit introduced in Spurious Dragon). This contract may not be deployable on Mainnet. Consider enabling the optimizer (with a low "runs" value!), turning off revert strings, or using libraries. +// Warning 5574: (27132-27224): Contract code size is 27218 bytes and exceeds 24576 bytes (a limit introduced in Spurious Dragon). This contract may not be deployable on Mainnet. Consider enabling the optimizer (with a low "runs" value!), turning off revert strings, or using libraries. +// Warning 5574: (27226-27319): Contract code size is 27218 bytes and exceeds 24576 bytes (a limit introduced in Spurious Dragon). This contract may not be deployable on Mainnet. Consider enabling the optimizer (with a low "runs" value!), turning off revert strings, or using libraries. diff --git a/test/libsolidity/syntaxTests/sizeLimits/combined_too_large_shanghai.sol b/test/libsolidity/syntaxTests/sizeLimits/combined_too_large_shanghai.sol index 32e8d9133be2..dd0122971d8e 100644 --- a/test/libsolidity/syntaxTests/sizeLimits/combined_too_large_shanghai.sol +++ b/test/libsolidity/syntaxTests/sizeLimits/combined_too_large_shanghai.sol @@ -26,7 +26,7 @@ contract test { // ==== // EVMVersion: =shanghai // ---- -// Warning 5574: (0-27130): Contract code size is 27187 bytes and exceeds 24576 bytes (a limit introduced in Spurious Dragon). This contract may not be deployable on Mainnet. Consider enabling the optimizer (with a low "runs" value!), turning off revert strings, or using libraries. -// Warning 5574: (27132-27224): Contract code size is 27213 bytes and exceeds 24576 bytes (a limit introduced in Spurious Dragon). This contract may not be deployable on Mainnet. Consider enabling the optimizer (with a low "runs" value!), turning off revert strings, or using libraries. -// Warning 5574: (27226-27319): Contract code size is 27212 bytes and exceeds 24576 bytes (a limit introduced in Spurious Dragon). This contract may not be deployable on Mainnet. Consider enabling the optimizer (with a low "runs" value!), turning off revert strings, or using libraries. -// Warning 3860: (27321-27398): Contract initcode size is 54618 bytes and exceeds 49152 bytes (a limit introduced in Shanghai). This contract may not be deployable on Mainnet. Consider enabling the optimizer (with a low "runs" value!), turning off revert strings, or using libraries. +// Warning 5574: (0-27130): Contract code size is 27186 bytes and exceeds 24576 bytes (a limit introduced in Spurious Dragon). This contract may not be deployable on Mainnet. Consider enabling the optimizer (with a low "runs" value!), turning off revert strings, or using libraries. +// Warning 5574: (27132-27224): Contract code size is 27212 bytes and exceeds 24576 bytes (a limit introduced in Spurious Dragon). This contract may not be deployable on Mainnet. Consider enabling the optimizer (with a low "runs" value!), turning off revert strings, or using libraries. +// Warning 5574: (27226-27319): Contract code size is 27211 bytes and exceeds 24576 bytes (a limit introduced in Spurious Dragon). This contract may not be deployable on Mainnet. Consider enabling the optimizer (with a low "runs" value!), turning off revert strings, or using libraries. +// Warning 3860: (27321-27398): Contract initcode size is 54616 bytes and exceeds 49152 bytes (a limit introduced in Shanghai). This contract may not be deployable on Mainnet. Consider enabling the optimizer (with a low "runs" value!), turning off revert strings, or using libraries. diff --git a/test/libsolidity/syntaxTests/sizeLimits/initcode_too_large_shanghai.sol b/test/libsolidity/syntaxTests/sizeLimits/initcode_too_large_shanghai.sol index d48693db05b1..15273c66a7c0 100644 --- a/test/libsolidity/syntaxTests/sizeLimits/initcode_too_large_shanghai.sol +++ b/test/libsolidity/syntaxTests/sizeLimits/initcode_too_large_shanghai.sol @@ -27,4 +27,4 @@ contract test { // ==== // EVMVersion: =shanghai // ---- -// Warning 3860: (20321-20415): Contract initcode size is 60882 bytes and exceeds 49152 bytes (a limit introduced in Shanghai). This contract may not be deployable on Mainnet. Consider enabling the optimizer (with a low "runs" value!), turning off revert strings, or using libraries. +// Warning 3860: (20321-20415): Contract initcode size is 60879 bytes and exceeds 49152 bytes (a limit introduced in Shanghai). This contract may not be deployable on Mainnet. Consider enabling the optimizer (with a low "runs" value!), turning off revert strings, or using libraries. diff --git a/test/libyul/yulOptimizerTests/fullSuite/abi2.yul b/test/libyul/yulOptimizerTests/fullSuite/abi2.yul index d8c8e90558ef..2f2e060be089 100644 --- a/test/libyul/yulOptimizerTests/fullSuite/abi2.yul +++ b/test/libyul/yulOptimizerTests/fullSuite/abi2.yul @@ -1093,25 +1093,21 @@ // value0 := and(calldataload(headStart), sub(shl(160, 1), 1)) // value1 := calldataload(add(headStart, 32)) // let offset := calldataload(add(headStart, 64)) -// let _1 := 0xffffffffffffffff -// if gt(offset, _1) { revert(0, 0) } -// let _2 := add(headStart, offset) -// if iszero(slt(add(_2, 0x1f), dataEnd)) { revert(0, 0) } -// let length := calldataload(_2) -// if gt(length, _1) { revert(0, 0) } -// if gt(add(add(_2, length), 32), dataEnd) { revert(0, 0) } -// value2 := add(_2, 32) +// if gt(offset, 0xffffffffffffffff) { revert(0, 0) } +// let _1 := add(headStart, offset) +// if iszero(slt(add(_1, 0x1f), dataEnd)) { revert(0, 0) } +// let length := calldataload(_1) +// if gt(length, 0xffffffffffffffff) { revert(0, 0) } +// if gt(add(add(_1, length), 32), dataEnd) { revert(0, 0) } +// value2 := add(_1, 32) // value3 := length -// let _3 := calldataload(add(headStart, 96)) -// if iszero(lt(_3, 3)) { revert(0, 0) } -// value4 := _3 +// value4 := cleanup_revert_enum_Operation(calldataload(add(headStart, 96))) // } // function abi_encode_bytes32_address_uint256_bytes32_enum_Operation_uint256_uint256_uint256_address_address_uint256(headStart, value10, value9, value8, value7, value6, value5, value4, value3, value2, value1, value0) -> tail // { // tail := add(headStart, 352) // mstore(headStart, value0) -// let _1 := sub(shl(160, 1), 1) -// mstore(add(headStart, 32), and(value1, _1)) +// mstore(add(headStart, 32), and(value1, sub(shl(160, 1), 1))) // mstore(add(headStart, 64), value2) // mstore(add(headStart, 96), value3) // if iszero(lt(value4, 3)) { invalid() } @@ -1119,8 +1115,13 @@ // mstore(add(headStart, 160), value5) // mstore(add(headStart, 192), value6) // mstore(add(headStart, 224), value7) -// mstore(add(headStart, 256), and(value8, _1)) -// mstore(add(headStart, 288), and(value9, _1)) +// mstore(add(headStart, 256), and(value8, sub(shl(160, 1), 1))) +// mstore(add(headStart, 288), and(value9, sub(shl(160, 1), 1))) // mstore(add(headStart, 320), value10) // } +// function cleanup_revert_enum_Operation(value) -> cleaned +// { +// if iszero(lt(value, 3)) { revert(0, 0) } +// cleaned := value +// } // } diff --git a/test/libyul/yulOptimizerTests/fullSuite/abi_example1.yul b/test/libyul/yulOptimizerTests/fullSuite/abi_example1.yul index 2abdf6d9c283..283b33563048 100644 --- a/test/libyul/yulOptimizerTests/fullSuite/abi_example1.yul +++ b/test/libyul/yulOptimizerTests/fullSuite/abi_example1.yul @@ -492,68 +492,64 @@ // } // function abi_decode_array_array_uint256_memory_dyn(offset, end) -> array // { -// let _1 := 0x1f // if iszero(slt(add(offset, 0x1f), end)) { revert(0, 0) } // let length := calldataload(offset) // array := allocateMemory(array_allocation_size_array_address_dyn_memory(length)) // let dst := array // mstore(array, length) -// let _2 := 0x20 -// dst := add(array, _2) -// let src := add(offset, _2) -// if gt(add(add(offset, shl(6, length)), _2), end) { revert(0, 0) } +// dst := add(array, 0x20) +// let src := add(offset, 0x20) +// if gt(add(add(offset, shl(6, length)), 0x20), end) { revert(0, 0) } // let i := 0 // for { } lt(i, length) { i := add(i, 1) } // { -// if iszero(slt(add(src, _1), end)) { revert(0, 0) } -// let dst_1 := allocateMemory_967() -// let dst_2 := dst_1 +// if iszero(slt(add(src, 0x1f), end)) { revert(0, 0) } +// let dst_1 := allocateMemory_824() +// let array_1 := dst_1 // let src_1 := src -// let _3 := add(src, 64) -// if gt(_3, end) { revert(0, 0) } +// let _1 := add(src, 64) +// if gt(_1, end) { revert(0, 0) } // let i_1 := 0 // for { } lt(i_1, 0x2) { i_1 := add(i_1, 1) } // { // mstore(dst_1, calldataload(src_1)) -// dst_1 := add(dst_1, _2) -// src_1 := add(src_1, _2) +// dst_1 := add(dst_1, 0x20) +// src_1 := add(src_1, 0x20) // } -// mstore(dst, dst_2) -// dst := add(dst, _2) -// src := _3 +// mstore(dst, array_1) +// dst := add(dst, 0x20) +// src := _1 // } // } // function abi_decode_uint256t_uint256t_array_uint256_dynt_array_array_uint256_memory_dyn(headStart, dataEnd) -> value0, value1, value2, value3 // { // if slt(sub(dataEnd, headStart), 128) { revert(0, 0) } // value0 := calldataload(headStart) -// let _1 := 32 -// value1 := calldataload(add(headStart, _1)) +// value1 := calldataload(add(headStart, 32)) // let offset := calldataload(add(headStart, 64)) -// let _2 := 0xffffffffffffffff -// if gt(offset, _2) { revert(0, 0) } -// let _3 := add(headStart, offset) -// if iszero(slt(add(_3, 0x1f), dataEnd)) { revert(0, 0) } -// let length := calldataload(_3) +// if gt(offset, 0xffffffffffffffff) { revert(0, 0) } +// let _1 := add(headStart, offset) +// if iszero(slt(add(_1, 0x1f), dataEnd)) { revert(0, 0) } +// let length := calldataload(_1) // let dst := allocateMemory(array_allocation_size_array_address_dyn_memory(length)) -// let dst_1 := dst +// let array := dst // mstore(dst, length) -// dst := add(dst, _1) -// let src := add(_3, _1) -// if gt(add(add(_3, shl(5, length)), _1), dataEnd) { revert(0, 0) } +// dst := add(dst, 32) +// let src := add(_1, 32) +// if gt(add(add(_1, shl(5, length)), 32), dataEnd) { revert(0, 0) } // let i := 0 // for { } lt(i, length) { i := add(i, 1) } // { // mstore(dst, calldataload(src)) -// dst := add(dst, _1) -// src := add(src, _1) +// dst := add(dst, 32) +// src := add(src, 32) // } -// value2 := dst_1 +// value2 := array // let offset_1 := calldataload(add(headStart, 96)) -// if gt(offset_1, _2) { revert(0, 0) } +// if gt(offset_1, 0xffffffffffffffff) { revert(0, 0) } // value3 := abi_decode_array_array_uint256_memory_dyn(add(headStart, offset_1), dataEnd) // } -// function allocateMemory_967() -> memPtr +// function allocateMemory_824() -> memPtr // { // memPtr := mload(64) // let newFreePtr := add(memPtr, 64) diff --git a/test/libyul/yulOptimizerTests/fullSuite/ackermann_function.yul b/test/libyul/yulOptimizerTests/fullSuite/ackermann_function.yul index dd5facaf0315..bf419017bf15 100644 --- a/test/libyul/yulOptimizerTests/fullSuite/ackermann_function.yul +++ b/test/libyul/yulOptimizerTests/fullSuite/ackermann_function.yul @@ -36,8 +36,7 @@ // switch n // case 0 { ret := A(add(m, not(0)), 1) } // default { -// let _1 := not(0) -// ret := A(add(m, _1), A(m, add(n, _1))) +// ret := A(add(m, not(0)), A(m, add(n, not(0)))) // } // } // } diff --git a/test/libyul/yulOptimizerTests/fullSuite/ackermann_function_if.yul b/test/libyul/yulOptimizerTests/fullSuite/ackermann_function_if.yul index 005c58778b87..edf1a086faaa 100644 --- a/test/libyul/yulOptimizerTests/fullSuite/ackermann_function_if.yul +++ b/test/libyul/yulOptimizerTests/fullSuite/ackermann_function_if.yul @@ -45,7 +45,6 @@ // ret := A(add(m, not(0)), 1) // leave // } -// let _1 := not(0) -// ret := A(add(m, _1), A(m, add(n, _1))) +// ret := A(add(m, not(0)), A(m, add(n, not(0)))) // } // } diff --git a/test/libyul/yulOptimizerTests/fullSuite/aztec.yul b/test/libyul/yulOptimizerTests/fullSuite/aztec.yul index 2b22055794c6..8b26a7ba3723 100644 --- a/test/libyul/yulOptimizerTests/fullSuite/aztec.yul +++ b/test/libyul/yulOptimizerTests/fullSuite/aztec.yul @@ -237,53 +237,56 @@ // { // mstore(0x80, 7673901602397024137095011250362199966051872585513276903826533215767972925880) // mstore(0xa0, 8489654445897228341090914135473290831551238522473825886865492707826370766375) -// let notes := add(0x04, calldataload(0x04)) +// let _1 := calldataload(0x04) +// let notes := add(0x04, _1) +// let m := calldataload(0x24) // let n := calldataload(notes) -// if gt(calldataload(0x24), n) +// let challenge := mod(calldataload(0x44), 0x30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f0000001) +// if gt(m, n) // { // mstore(0x00, 404) // revert(0x00, 0x20) // } // let kn := calldataload(add(calldatasize(), not(191))) -// let _1 := 0x2a0 -// mstore(_1, caller()) +// mstore(0x2a0, caller()) // mstore(0x2c0, kn) -// mstore(0x2e0, calldataload(0x24)) -// kn := mulmod(sub(0x30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f0000001, kn), mod(calldataload(0x44), 0x30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f0000001), 0x30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f0000001) +// mstore(0x2e0, m) +// kn := mulmod(sub(0x30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f0000001, kn), challenge, 0x30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f0000001) // hashCommitments(notes, n) // let b := add(0x300, shl(7, n)) // let i := 0 // for { } lt(i, n) { i := add(i, 0x01) } // { -// let noteIndex := add(add(calldataload(0x04), mul(i, 0xc0)), 0x24) +// let _2 := add(_1, mul(i, 0xc0)) +// let noteIndex := add(_2, 0x24) // let k := 0 -// let a := calldataload(add(add(calldataload(0x04), mul(i, 0xc0)), 0x44)) -// let c := mod(calldataload(0x44), 0x30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f0000001) -// let _2 := add(i, 0x01) -// switch eq(_2, n) +// let a := calldataload(add(_2, 0x44)) +// let c := challenge +// let _3 := add(i, 0x01) +// switch eq(_3, n) // case 1 { // k := kn -// if eq(calldataload(0x24), n) +// if eq(m, n) // { // k := sub(0x30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f0000001, kn) // } // } // case 0 { k := calldataload(noteIndex) } // validateCommitment(noteIndex, k, a) -// switch gt(_2, calldataload(0x24)) +// switch gt(_3, m) // case 1 { // kn := addmod(kn, sub(0x30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f0000001, k), 0x30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f0000001) // let x := mod(mload(0), 0x30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f0000001) // k := mulmod(k, x, 0x30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f0000001) // a := mulmod(a, x, 0x30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f0000001) -// c := mulmod(mod(calldataload(0x44), 0x30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f0000001), x, 0x30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f0000001) +// c := mulmod(challenge, x, 0x30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f0000001) // mstore(0, keccak256(0, 0x20)) // } // case 0 { // kn := addmod(kn, k, 0x30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f0000001) // } -// calldatacopy(0xe0, add(add(calldataload(0x04), mul(i, 0xc0)), 164), 0x40) -// calldatacopy(0x20, add(add(calldataload(0x04), mul(i, 0xc0)), 100), 0x40) +// calldatacopy(0xe0, add(_2, 164), 0x40) +// calldatacopy(0x20, add(_2, 100), 0x40) // mstore(0x120, sub(0x30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f0000001, c)) // mstore(0x60, k) // mstore(0xc0, a) @@ -292,19 +295,18 @@ // let result_2 := and(result_1, call(gas(), 7, 0, 0x80, 0x60, 0x160, 0x40)) // let result_3 := and(result_2, call(gas(), 6, 0, 0x120, 0x80, 0x160, 0x40)) // result := and(result_3, call(gas(), 6, 0, 0x160, 0x80, b, 0x40)) -// if eq(i, calldataload(0x24)) +// if eq(i, m) // { // mstore(0x260, mload(0x20)) // mstore(0x280, mload(0x40)) // mstore(0x1e0, mload(0xe0)) // mstore(0x200, sub(0x30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd47, mload(0x100))) // } -// if gt(i, calldataload(0x24)) +// if gt(i, m) // { // mstore(0x60, c) -// let _3 := 0x220 -// let result_4 := and(result, call(gas(), 7, 0, 0x20, 0x60, _3, 0x40)) -// let result_5 := and(result_4, call(gas(), 6, 0, _3, 0x80, 0x260, 0x40)) +// let result_4 := and(result, call(gas(), 7, 0, 0x20, 0x60, 0x220, 0x40)) +// let result_5 := and(result_4, call(gas(), 6, 0, 0x220, 0x80, 0x260, 0x40)) // result := and(result_5, call(gas(), 6, 0, 0x1a0, 0x80, 0x1e0, 0x40)) // } // if iszero(result) @@ -314,8 +316,8 @@ // } // b := add(b, 0x40) // } -// if lt(calldataload(0x24), n) { validatePairing() } -// if iszero(eq(mod(keccak256(_1, add(b, not(671))), 0x30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f0000001), mod(calldataload(0x44), 0x30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f0000001))) +// if lt(m, n) { validatePairing() } +// if iszero(eq(mod(keccak256(0x2a0, add(b, not(671))), 0x30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f0000001), challenge)) // { // mstore(0, 404) // revert(0, 0x20) @@ -329,35 +331,28 @@ // let t2_x_1 := calldataload(132) // let t2_y := calldataload(164) // let t2_y_1 := calldataload(196) -// let _1 := 0x90689d0585ff075ec9e99ad690c3395bc4b313370b38ef355acdadcd122975b -// let _2 := 0x12c85ea5db8c6deb4aab71808dcb408fe3d1e7690c43d37b4ce6cc0166fa7daa -// let _3 := 0x198e9393920d483a7260bfb731fb5d25f1aa493335a9e71297e485b7aef312c2 -// let _4 := 0x1800deef121f1e76426a00665e5c4479674322d4f75edadd46debd5cd992f6ed -// if or(or(or(or(or(or(or(iszero(t2_x), iszero(t2_x_1)), iszero(t2_y)), iszero(t2_y_1)), eq(t2_x, _4)), eq(t2_x_1, _3)), eq(t2_y, _2)), eq(t2_y_1, _1)) +// if or(or(or(or(or(or(or(iszero(t2_x), iszero(t2_x_1)), iszero(t2_y)), iszero(t2_y_1)), eq(t2_x, 0x1800deef121f1e76426a00665e5c4479674322d4f75edadd46debd5cd992f6ed)), eq(t2_x_1, 0x198e9393920d483a7260bfb731fb5d25f1aa493335a9e71297e485b7aef312c2)), eq(t2_y, 0x12c85ea5db8c6deb4aab71808dcb408fe3d1e7690c43d37b4ce6cc0166fa7daa)), eq(t2_y_1, 0x90689d0585ff075ec9e99ad690c3395bc4b313370b38ef355acdadcd122975b)) // { // mstore(0x00, 400) // revert(0x00, 0x20) // } -// let _5 := mload(0x1e0) -// let _6 := 0x20 -// mstore(_6, _5) +// mstore(0x20, mload(0x1e0)) // mstore(0x40, mload(0x200)) -// mstore(0x80, _4) -// mstore(0x60, _3) -// mstore(0xc0, _2) -// mstore(0xa0, _1) +// mstore(0x80, 0x1800deef121f1e76426a00665e5c4479674322d4f75edadd46debd5cd992f6ed) +// mstore(0x60, 0x198e9393920d483a7260bfb731fb5d25f1aa493335a9e71297e485b7aef312c2) +// mstore(0xc0, 0x12c85ea5db8c6deb4aab71808dcb408fe3d1e7690c43d37b4ce6cc0166fa7daa) +// mstore(0xa0, 0x90689d0585ff075ec9e99ad690c3395bc4b313370b38ef355acdadcd122975b) // mstore(0xe0, mload(0x260)) // mstore(0x100, mload(0x280)) // mstore(0x140, t2_x) // mstore(0x120, t2_x_1) -// let _7 := 0x180 -// mstore(_7, t2_y) +// mstore(0x180, t2_y) // mstore(0x160, t2_y_1) -// let success := call(gas(), 8, 0, _6, _7, _6, _6) -// if or(iszero(success), iszero(mload(_6))) +// let success := call(gas(), 8, 0, 0x20, 0x180, 0x20, 0x20) +// if or(iszero(success), iszero(mload(0x20))) // { // mstore(0, 400) -// revert(0, _6) +// revert(0, 0x20) // } // } // function validateCommitment(note, k, a) @@ -366,9 +361,7 @@ // let gammaY := calldataload(add(note, 0x60)) // let sigmaX := calldataload(add(note, 0x80)) // let sigmaY := calldataload(add(note, 0xa0)) -// let _1 := 0x30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd47 -// let _2 := 0x30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f0000001 -// if iszero(and(and(and(eq(mod(a, _2), a), gt(a, 1)), and(eq(mod(k, _2), k), gt(k, 1))), and(eq(addmod(mulmod(mulmod(sigmaX, sigmaX, _1), sigmaX, _1), 3, _1), mulmod(sigmaY, sigmaY, _1)), eq(addmod(mulmod(mulmod(gammaX, gammaX, _1), gammaX, _1), 3, _1), mulmod(gammaY, gammaY, _1))))) +// if iszero(and(and(and(eq(mod(a, 0x30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f0000001), a), gt(a, 1)), and(eq(mod(k, 0x30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f0000001), k), gt(k, 1))), and(eq(addmod(mulmod(mulmod(sigmaX, sigmaX, 0x30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd47), sigmaX, 0x30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd47), 3, 0x30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd47), mulmod(sigmaY, sigmaY, 0x30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd47)), eq(addmod(mulmod(mulmod(gammaX, gammaX, 0x30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd47), gammaX, 0x30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd47), 3, 0x30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd47), mulmod(gammaY, gammaY, 0x30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd47))))) // { // mstore(0x00, 400) // revert(0x00, 0x20) diff --git a/test/libyul/yulOptimizerTests/fullSuite/call_arguments_without_side_effects.yul b/test/libyul/yulOptimizerTests/fullSuite/call_arguments_without_side_effects.yul index fc36bdfa37a0..5f42470f65a4 100644 --- a/test/libyul/yulOptimizerTests/fullSuite/call_arguments_without_side_effects.yul +++ b/test/libyul/yulOptimizerTests/fullSuite/call_arguments_without_side_effects.yul @@ -28,21 +28,20 @@ // // { // { -// let _1 := 1 -// mstore(_1, _1) -// mstore(2, _1) -// mstore(3, _1) -// mstore(4, _1) -// mstore(5, _1) -// mstore(6, _1) -// let _2 := sload(8) -// mstore(mload(7), _1) -// mstore(_2, _1) -// mstore(calldataload(9), _1) -// let _3 := mload(13) -// mstore(11, _1) -// mstore(12, _1) -// mstore(_3, _1) +// mstore(1, 1) +// mstore(2, 1) +// mstore(3, 1) +// mstore(4, 1) +// mstore(5, 1) +// mstore(6, 1) +// let _1 := sload(8) +// mstore(mload(7), 1) +// mstore(_1, 1) +// mstore(calldataload(9), 1) +// let _2 := mload(13) +// mstore(11, 1) +// mstore(12, 1) +// mstore(_2, 1) // return(0, 32) // } // } diff --git a/test/libyul/yulOptimizerTests/fullSuite/create2_and_mask.yul b/test/libyul/yulOptimizerTests/fullSuite/create2_and_mask.yul index f9d248e2feeb..6ebca20f5bbb 100644 --- a/test/libyul/yulOptimizerTests/fullSuite/create2_and_mask.yul +++ b/test/libyul/yulOptimizerTests/fullSuite/create2_and_mask.yul @@ -13,8 +13,7 @@ // // { // { -// let _1 := sub(shl(160, 1), 1) -// let a := and(create2(0, 0, 0x20, 0), _1) -// sstore(a, and(_1, create2(0, 0, 0x20, 0))) +// let a := and(create2(0, 0, 0x20, 0), sub(shl(160, 1), 1)) +// sstore(a, and(sub(shl(160, 1), 1), create2(0, 0, 0x20, 0))) // } // } diff --git a/test/libyul/yulOptimizerTests/fullSuite/create_and_mask.yul b/test/libyul/yulOptimizerTests/fullSuite/create_and_mask.yul index c89c620bb52d..078616bb3b7e 100644 --- a/test/libyul/yulOptimizerTests/fullSuite/create_and_mask.yul +++ b/test/libyul/yulOptimizerTests/fullSuite/create_and_mask.yul @@ -13,8 +13,7 @@ // // { // { -// let _1 := sub(shl(160, 1), 1) -// let a := and(create(0, 0, 0x20), _1) -// sstore(a, and(_1, create(0, 0, 0x20))) +// let a := and(create(0, 0, 0x20), sub(shl(160, 1), 1)) +// sstore(a, and(sub(shl(160, 1), 1), create(0, 0, 0x20))) // } // } diff --git a/test/libyul/yulOptimizerTests/fullSuite/devcon_example.yul b/test/libyul/yulOptimizerTests/fullSuite/devcon_example.yul index fe06f1629bc3..fca4a6366bdf 100644 --- a/test/libyul/yulOptimizerTests/fullSuite/devcon_example.yul +++ b/test/libyul/yulOptimizerTests/fullSuite/devcon_example.yul @@ -25,8 +25,11 @@ // let sum := 0 // let length := calldataload(_1) // let i := 0 -// for { } lt(i, length) { i := add(i, 1) } +// for { } true { i := add(i, 1) } // { +// let _2 := iszero(lt(i, length)) +// if _2 { break } +// _2 := 0 // sum := add(sum, calldataload(add(add(_1, shl(5, i)), 0x20))) // } // sstore(0, sum) diff --git a/test/libyul/yulOptimizerTests/fullSuite/extcodelength.yul b/test/libyul/yulOptimizerTests/fullSuite/extcodelength.yul index 436f5d5fafc4..dd6cdc0e44c4 100644 --- a/test/libyul/yulOptimizerTests/fullSuite/extcodelength.yul +++ b/test/libyul/yulOptimizerTests/fullSuite/extcodelength.yul @@ -26,12 +26,10 @@ // let value := calldataload(4) // if iszero(eq(value, and(value, sub(shl(160, 1), 1)))) { revert(0, 0) } // let length := extcodesize(value) -// let _1 := 0xffffffffffffffff -// if gt(length, _1) { revert(0, 0) } +// if gt(length, 0xffffffffffffffff) { revert(0, 0) } // let memPtr := mload(64) -// let _2 := not(31) -// let newFreePtr := add(memPtr, and(add(and(add(length, 31), _2), 63), _2)) -// if or(gt(newFreePtr, _1), lt(newFreePtr, memPtr)) { revert(0, 0) } +// let newFreePtr := add(memPtr, and(add(and(add(length, 31), not(31)), 63), not(31))) +// if or(gt(newFreePtr, 0xffffffffffffffff), lt(newFreePtr, memPtr)) { revert(0, 0) } // mstore(64, newFreePtr) // mstore(memPtr, length) // extcodecopy(value, add(memPtr, 32), 0, length) diff --git a/test/libyul/yulOptimizerTests/fullSuite/loopInvariantCodeMotion.yul b/test/libyul/yulOptimizerTests/fullSuite/loopInvariantCodeMotion.yul index 86329c3275f0..76d671bfc3e2 100644 --- a/test/libyul/yulOptimizerTests/fullSuite/loopInvariantCodeMotion.yul +++ b/test/libyul/yulOptimizerTests/fullSuite/loopInvariantCodeMotion.yul @@ -29,8 +29,11 @@ // let length := calldataload(_1) // let i := 0 // let _2 := calldataload(7) -// for { } lt(i, length) { i := add(i, 1) } +// for { } true { i := add(i, 1) } // { +// let _3 := iszero(lt(i, length)) +// if _3 { break } +// _3 := 0 // sum := add(sum, add(calldataload(add(add(_1, shl(5, i)), 0x20)), _2)) // } // sstore(0, sum) diff --git a/test/libyul/yulOptimizerTests/fullSuite/medium.yul b/test/libyul/yulOptimizerTests/fullSuite/medium.yul index 9a6381d79913..af49850a19ba 100644 --- a/test/libyul/yulOptimizerTests/fullSuite/medium.yul +++ b/test/libyul/yulOptimizerTests/fullSuite/medium.yul @@ -23,7 +23,14 @@ // // { // { -// sstore(0, add(mload(0x40), 128)) -// sstore(1, 0x20) +// let p := mload(0x40) +// mstore(0x40, add(p, 96)) +// let _1 := add(p, 128) +// mstore(_1, 2) +// mstore(0x40, 0x20) +// for { } iszero(1) { } +// { } +// sstore(0, _1) +// sstore(1, mload(0x40)) // } // } diff --git a/test/libyul/yulOptimizerTests/fullSuite/name_dependent_cse_bug_part_1_pre_shanghai.yul b/test/libyul/yulOptimizerTests/fullSuite/name_dependent_cse_bug_part_1_pre_shanghai.yul index d041cff1041f..4d3ed471b4e1 100644 --- a/test/libyul/yulOptimizerTests/fullSuite/name_dependent_cse_bug_part_1_pre_shanghai.yul +++ b/test/libyul/yulOptimizerTests/fullSuite/name_dependent_cse_bug_part_1_pre_shanghai.yul @@ -33,14 +33,13 @@ // { // { // let a := 0 -// let a_1 := 0 -// for { } a_1 { } +// for { } a { } // { -// let _1 := add(a_1, a_1) +// let _1 := add(a, a) // let var := add(_1, _1) -// switch a_1 -// case 0 { a_1 := var } -// default { sstore(a, var) } +// switch a +// case 0 { a := var } +// default { sstore(0, var) } // } // } // } diff --git a/test/libyul/yulOptimizerTests/fullSuite/name_dependent_cse_bug_part_2_pre_shanghai.yul b/test/libyul/yulOptimizerTests/fullSuite/name_dependent_cse_bug_part_2_pre_shanghai.yul index 06965e3ca695..3161dc2efac4 100644 --- a/test/libyul/yulOptimizerTests/fullSuite/name_dependent_cse_bug_part_2_pre_shanghai.yul +++ b/test/libyul/yulOptimizerTests/fullSuite/name_dependent_cse_bug_part_2_pre_shanghai.yul @@ -33,14 +33,13 @@ // { // { // let a := 0 -// let a_1 := 0 -// for { } a_1 { } +// for { } a { } // { -// let _1 := add(a_1, a_1) +// let _1 := add(a, a) // let var := add(_1, _1) -// switch a_1 -// case 0 { a_1 := var } -// default { sstore(a, var) } +// switch a +// case 0 { a := var } +// default { sstore(0, var) } // } // } // } diff --git a/test/libyul/yulOptimizerTests/fullSuite/stack_compressor_msize.yul b/test/libyul/yulOptimizerTests/fullSuite/stack_compressor_msize.yul index 75e2ff4c2010..5fbe8d22e615 100644 --- a/test/libyul/yulOptimizerTests/fullSuite/stack_compressor_msize.yul +++ b/test/libyul/yulOptimizerTests/fullSuite/stack_compressor_msize.yul @@ -40,22 +40,18 @@ // // { // { -// let _1 := 1 -// let _2 := 15 -// let _3 := 10 -// let _4 := gt(not(gcd(_3, _2)), _1) -// let _5 := gcd(_3, _2) -// let _6 := not(0) -// let _7 := lt(or(_1, add(gcd(_3, _2), _6)), _1) -// let _8 := gcd(_3, _2) -// let _9 := gcd(_3, _2) -// pop(keccak256(gcd(_3, _2), or(gt(not(gcd(_3, _2)), _1), _1))) -// mstore(lt(or(gt(_1, or(or(gt(or(or(or(gt(or(gt(_6, _9), _1), _8), _7), _5), _1), _1), _4), _1)), _1), _1), _1) -// sstore(not(gcd(_3, _2)), _1) -// sstore(2, _1) -// extcodecopy(_1, msize(), _1, _1) +// let _1 := gt(not(gcd(10, 15)), 1) +// let _2 := gcd(10, 15) +// let _3 := lt(or(1, add(gcd(10, 15), not(0))), 1) +// let _4 := gcd(10, 15) +// let _5 := gcd(10, 15) +// pop(keccak256(gcd(10, 15), or(gt(not(gcd(10, 15)), 1), 1))) +// mstore(lt(or(gt(1, or(or(gt(or(or(or(gt(or(gt(not(0), _5), 1), _4), _3), _2), 1), 1), _1), 1)), 1), 1), 1) +// sstore(not(gcd(10, 15)), 1) +// sstore(2, 1) +// foo_singlereturn() // sstore(0, 0) -// sstore(3, _1) +// sstore(3, 1) // } // function gcd(_a, _b) -> out // { @@ -63,4 +59,6 @@ // case 0 { out := _a } // default { out := gcd(_b, mod(_a, _b)) } // } +// function foo_singlereturn() +// { extcodecopy(1, msize(), 1, 1) } // }