Do not split zeros in ExpressionSplitter

Test push
This commit is contained in:
Nikola Matic 2023-06-22 16:16:27 +02:00
parent 22c679b981
commit 29ecd7b70a
78 changed files with 445 additions and 459 deletions

View File

@ -27,6 +27,8 @@
#include <libyul/AST.h> #include <libyul/AST.h>
#include <libyul/Dialect.h> #include <libyul/Dialect.h>
#include <libyul/Utilities.h>
#include <libyul/backends/evm/EVMDialect.h>
#include <libsolutil/CommonData.h> #include <libsolutil/CommonData.h>
@ -97,6 +99,16 @@ void ExpressionSplitter::outlineExpression(Expression& _expr)
if (holds_alternative<Identifier>(_expr)) if (holds_alternative<Identifier>(_expr))
return; return;
// Do not split function calls with a zero (0) literal argument
// in case the PUSH0 opcode is available
if (auto&& evmDialect = dynamic_cast<EVMDialect const*>(&m_dialect))
if (
evmDialect->evmVersion().hasPush0() &&
holds_alternative<Literal>(_expr) &&
valueOfLiteral(get<Literal>(_expr)) == 0
)
return;
visit(_expr); visit(_expr);
shared_ptr<DebugData const> debugData = debugDataOf(_expr); shared_ptr<DebugData const> debugData = debugDataOf(_expr);

View File

@ -9,9 +9,10 @@ object "D_12" {
/// @src 0:115:139 "assembly { mstore(0,0) }" /// @src 0:115:139 "assembly { mstore(0,0) }"
mstore(0, 0) mstore(0, 0)
/// @src 0:82:175 "contract D {..." /// @src 0:82:175 "contract D {..."
let _1 := datasize("D_12_deployed") let _1 := mload(64)
codecopy(128, dataoffset("D_12_deployed"), _1) let _2 := datasize("D_12_deployed")
return(128, _1) codecopy(_1, dataoffset("D_12_deployed"), _2)
return(_1, _2)
} }
} }
/// @use-src 0:"ir_with_assembly_no_memoryguard_creation/input.sol" /// @use-src 0:"ir_with_assembly_no_memoryguard_creation/input.sol"

View File

@ -10,9 +10,10 @@ object "C_12" {
mstore(0, 100) mstore(0, 100)
sstore(0, keccak256(0, 32)) sstore(0, keccak256(0, 32))
/// @src 0:62:463 "contract C {..." /// @src 0:62:463 "contract C {..."
let _1 := datasize("C_12_deployed") let _1 := mload(64)
codecopy(128, dataoffset("C_12_deployed"), _1) let _2 := datasize("C_12_deployed")
return(128, _1) codecopy(_1, dataoffset("C_12_deployed"), _2)
return(_1, _2)
} }
} }
/// @use-src 0:"keccak_optimization_deploy_code/input.sol" /// @use-src 0:"keccak_optimization_deploy_code/input.sol"

View File

@ -17,105 +17,105 @@ object "C_59" {
code { code {
{ {
/// @src 0:346:625 "contract C {..." /// @src 0:346:625 "contract C {..."
let _1 := memoryguard(0x80) let _1 := 64
let _2 := 64 mstore(_1, memoryguard(0x80))
mstore(_2, _1) let _2 := 4
let _3 := 4 if iszero(lt(calldatasize(), _2))
if iszero(lt(calldatasize(), _3))
{ {
if eq(0xf8eddcc6, shr(224, calldataload(0))) if eq(0xf8eddcc6, shr(224, calldataload(0)))
{ {
if callvalue() { revert(0, 0) } if callvalue() { revert(0, 0) }
let _4 := 32 let _3 := 32
if slt(add(calldatasize(), not(3)), _4) { revert(0, 0) } if slt(add(calldatasize(), not(3)), _3) { revert(0, 0) }
let offset := calldataload(_3) let offset := calldataload(_2)
let _5 := 0xffffffffffffffff let _4 := 0xffffffffffffffff
if gt(offset, _5) { revert(0, 0) } if gt(offset, _4) { revert(0, 0) }
if iszero(slt(add(offset, 35), calldatasize())) { revert(0, 0) } if iszero(slt(add(offset, 35), calldatasize())) { revert(0, 0) }
let _6 := calldataload(add(_3, offset)) let _5 := calldataload(add(_2, offset))
let _7 := 36 let _6 := 36
if gt(_6, _5) if gt(_5, _4)
{ {
mstore(0, shl(224, 0x4e487b71)) mstore(0, shl(224, 0x4e487b71))
mstore(_3, 0x41) mstore(_2, 0x41)
revert(0, _7) revert(0, _6)
} }
let _8 := shl(5, _6) let _7 := shl(5, _5)
let _9 := not(31) let memPtr := mload(_1)
let newFreePtr := add(_1, and(add(_8, 63), _9)) let _8 := not(31)
if or(gt(newFreePtr, _5), lt(newFreePtr, _1)) let newFreePtr := add(memPtr, and(add(_7, 63), _8))
if or(gt(newFreePtr, _4), lt(newFreePtr, memPtr))
{ {
mstore(0, shl(224, 0x4e487b71)) mstore(0, shl(224, 0x4e487b71))
mstore(_3, 0x41) mstore(_2, 0x41)
revert(0, _7) revert(0, _6)
} }
mstore(_2, newFreePtr) mstore(_1, newFreePtr)
let dst := _1 let dst := memPtr
mstore(_1, _6) mstore(memPtr, _5)
dst := add(_1, _4) dst := add(memPtr, _3)
let dst_1 := dst let dst_1 := dst
let srcEnd := add(add(offset, _8), _7) let srcEnd := add(add(offset, _7), _6)
if gt(srcEnd, calldatasize()) { revert(0, 0) } if gt(srcEnd, calldatasize()) { revert(0, 0) }
let src := add(offset, _7) let src := add(offset, _6)
for { } lt(src, srcEnd) { src := add(src, _4) } for { } lt(src, srcEnd) { src := add(src, _3) }
{ {
if slt(sub(calldatasize(), src), _4) { revert(0, 0) } if slt(sub(calldatasize(), src), _3) { revert(0, 0) }
let memPtr := mload(_2) let memPtr_1 := mload(_1)
let newFreePtr_1 := add(memPtr, _4) let newFreePtr_1 := add(memPtr_1, _3)
if or(gt(newFreePtr_1, _5), lt(newFreePtr_1, memPtr)) if or(gt(newFreePtr_1, _4), lt(newFreePtr_1, memPtr_1))
{ {
mstore(0, shl(224, 0x4e487b71)) mstore(0, shl(224, 0x4e487b71))
mstore(_3, 0x41) mstore(_2, 0x41)
revert(0, _7) revert(0, _6)
} }
mstore(_2, newFreePtr_1) mstore(_1, newFreePtr_1)
mstore(memPtr, calldataload(src)) mstore(memPtr_1, calldataload(src))
mstore(dst, memPtr) mstore(dst, memPtr_1)
dst := add(dst, _4) dst := add(dst, _3)
} }
if iszero(mload(_1)) if iszero(mload(memPtr))
{ {
mstore(0, shl(224, 0x4e487b71)) mstore(0, shl(224, 0x4e487b71))
mstore(_3, 0x32) mstore(_2, 0x32)
revert(0, _7) revert(0, _6)
} }
sstore(0, mload(/** @src 0:469:474 "_s[0]" */ mload(dst_1))) sstore(0, mload(/** @src 0:469:474 "_s[0]" */ mload(dst_1)))
/// @src 0:346:625 "contract C {..." /// @src 0:346:625 "contract C {..."
if iszero(lt(/** @src 0:492:493 "1" */ 0x01, /** @src 0:346:625 "contract C {..." */ mload(_1))) if iszero(lt(/** @src 0:492:493 "1" */ 0x01, /** @src 0:346:625 "contract C {..." */ mload(memPtr)))
{ {
mstore(0, shl(224, 0x4e487b71)) mstore(0, shl(224, 0x4e487b71))
mstore(_3, 0x32) mstore(_2, 0x32)
revert(0, _7) revert(0, _6)
} }
let _10 := mload(/** @src 0:489:494 "_s[1]" */ mload(/** @src 0:346:625 "contract C {..." */ add(_1, _2))) let _9 := mload(/** @src 0:489:494 "_s[1]" */ mload(/** @src 0:346:625 "contract C {..." */ add(memPtr, _1)))
sstore(0x02, _10) sstore(0x02, _9)
let memPtr_1 := mload(_2) let memPtr_2 := mload(_1)
let newFreePtr_2 := add(memPtr_1, 160) let newFreePtr_2 := add(memPtr_2, 160)
if or(gt(newFreePtr_2, _5), lt(newFreePtr_2, memPtr_1)) if or(gt(newFreePtr_2, _4), lt(newFreePtr_2, memPtr_2))
{ {
mstore(0, shl(224, 0x4e487b71)) mstore(0, shl(224, 0x4e487b71))
mstore(_3, 0x41) mstore(_2, 0x41)
revert(0, _7) revert(0, _6)
} }
mstore(_2, newFreePtr_2) mstore(_1, newFreePtr_2)
mstore(memPtr_1, 100) mstore(memPtr_2, 100)
mstore(add(memPtr_1, _4), "longstringlongstringlongstringlo") mstore(add(memPtr_2, _3), "longstringlongstringlongstringlo")
mstore(add(memPtr_1, _2), "ngstringlongstringlongstringlong") mstore(add(memPtr_2, _1), "ngstringlongstringlongstringlong")
let _11 := 96 let _10 := 96
mstore(add(memPtr_1, _11), "stringlongstringlongstringlongst") mstore(add(memPtr_2, _10), "stringlongstringlongstringlongst")
mstore(add(memPtr_1, 128), "ring") mstore(add(memPtr_2, 128), "ring")
let memPos := mload(_2) let memPos := mload(_1)
mstore(memPos, _10) mstore(memPos, _9)
mstore(add(memPos, _4), _2) mstore(add(memPos, _3), _1)
let length := mload(memPtr_1) let length := mload(memPtr_2)
mstore(add(memPos, _2), length) mstore(add(memPos, _1), length)
let i := 0 let i := 0
for { } lt(i, length) { i := add(i, _4) } for { } lt(i, length) { i := add(i, _3) }
{ {
mstore(add(add(memPos, i), _11), mload(add(add(memPtr_1, i), _4))) mstore(add(add(memPos, i), _10), mload(add(add(memPtr_2, i), _3)))
} }
mstore(add(add(memPos, length), _11), 0) mstore(add(add(memPos, length), _10), 0)
return(memPos, add(sub(add(memPos, and(add(length, 31), _9)), memPos), _11)) return(memPos, add(sub(add(memPos, and(add(length, 31), _8)), memPos), _10))
} }
} }
revert(0, 0) revert(0, 0)

View File

@ -84,11 +84,9 @@ stop
sub_0: assembly { sub_0: assembly {
/* \"C\":79:428 contract C... */ /* \"C\":79:428 contract C... */
0x80
0x40 0x40
swap1 0x80
dup1 dup2
dup3
mstore mstore
jumpi(tag_2, iszero(lt(calldatasize, 0x04))) jumpi(tag_2, iszero(lt(calldatasize, 0x04)))
0x00 0x00
@ -96,13 +94,11 @@ sub_0: assembly {
revert revert
tag_2: tag_2:
shr(0xe0, calldataload(0x00)) shr(0xe0, calldataload(0x00))
swap1 dup1
dup2
0x26121ff0 0x26121ff0
eq eq
tag_4 tag_4
jumpi jumpi
pop
dup1 dup1
0x793816ec 0x793816ec
eq eq
@ -301,17 +297,17 @@ sub_0: assembly {
mstore mstore
return return
tag_4: tag_4:
pop
jumpi(tag_26, callvalue) jumpi(tag_26, callvalue)
jumpi(tag_26, slt(add(not(0x03), calldatasize), 0x00)) jumpi(tag_26, slt(add(not(0x03), calldatasize), 0x00))
/* \"C\":290:298 immutVar */ /* \"C\":290:298 immutVar */
immutable(\"0xe4b1702d9298fee62dfeccc57d322a463ad55ca201256d01f62b45b2e1c21c10\") immutable(\"0xe4b1702d9298fee62dfeccc57d322a463ad55ca201256d01f62b45b2e1c21c10\")
/* \"C\":117:119 41 */ /* \"C\":117:119 41 */
swap1 dup1
dup2
0x29 0x29
add add
swap2 swap1
dup3 dup2
slt slt
0x01 0x01
and and
@ -320,6 +316,8 @@ sub_0: assembly {
/* \"C\":79:428 contract C... */ /* \"C\":79:428 contract C... */
0x20 0x20
swap2 swap2
mload
swap1
dup2 dup2
mstore mstore
return return
@ -460,11 +458,9 @@ stop
sub_0: assembly { sub_0: assembly {
/* \"D\":91:166 contract D is C(3)... */ /* \"D\":91:166 contract D is C(3)... */
0x80
0x40 0x40
swap1 0x80
dup1 dup2
dup3
mstore mstore
jumpi(tag_2, iszero(lt(calldatasize, 0x04))) jumpi(tag_2, iszero(lt(calldatasize, 0x04)))
0x00 0x00
@ -472,13 +468,11 @@ sub_0: assembly {
revert revert
tag_2: tag_2:
shr(0xe0, calldataload(0x00)) shr(0xe0, calldataload(0x00))
swap1 dup1
dup2
0x26121ff0 0x26121ff0
eq eq
tag_4 tag_4
jumpi jumpi
pop
dup1 dup1
0x793816ec 0x793816ec
eq eq
@ -677,17 +671,17 @@ sub_0: assembly {
mstore mstore
return return
tag_4: tag_4:
pop
jumpi(tag_26, callvalue) jumpi(tag_26, callvalue)
jumpi(tag_26, slt(add(not(0x03), calldatasize), 0x00)) jumpi(tag_26, slt(add(not(0x03), calldatasize), 0x00))
/* \"C\":290:298 immutVar */ /* \"C\":290:298 immutVar */
immutable(\"0xe4b1702d9298fee62dfeccc57d322a463ad55ca201256d01f62b45b2e1c21c10\") immutable(\"0xe4b1702d9298fee62dfeccc57d322a463ad55ca201256d01f62b45b2e1c21c10\")
/* \"C\":117:119 41 */ /* \"C\":117:119 41 */
swap1 dup1
dup2
0x29 0x29
add add
swap2 swap1
dup3 dup2
slt slt
0x01 0x01
and and
@ -696,6 +690,8 @@ sub_0: assembly {
/* \"D\":91:166 contract D is C(3)... */ /* \"D\":91:166 contract D is C(3)... */
0x20 0x20
swap2 swap2
mload
swap1
dup2 dup2
mstore mstore
return return

View File

@ -650,9 +650,8 @@ object \"C_54\" {
code { code {
{ {
/// @src 0:79:435 \"contract C...\" /// @src 0:79:435 \"contract C...\"
let _1 := memoryguard(0x80) let _1 := 64
let _2 := 64 mstore(_1, memoryguard(0x80))
mstore(_2, _1)
if iszero(lt(calldatasize(), 4)) if iszero(lt(calldatasize(), 4))
{ {
switch shr(224, calldataload(0)) switch shr(224, calldataload(0))
@ -660,91 +659,92 @@ object \"C_54\" {
if callvalue() { revert(0, 0) } if callvalue() { revert(0, 0) }
if slt(add(calldatasize(), not(3)), 0) { revert(0, 0) } if slt(add(calldatasize(), not(3)), 0) { revert(0, 0) }
/// @src 0:297:305 \"immutVar\" /// @src 0:297:305 \"immutVar\"
let _3 := loadimmutable(\"8\") let _2 := loadimmutable(\"8\")
/// @src 0:79:435 \"contract C...\" /// @src 0:79:435 \"contract C...\"
let sum := add(/** @src 0:124:126 \"41\" */ 0x29, /** @src 0:79:435 \"contract C...\" */ _3) let sum := add(/** @src 0:124:126 \"41\" */ 0x29, /** @src 0:79:435 \"contract C...\" */ _2)
if and(1, slt(sum, _3)) if and(1, slt(sum, _2))
{ {
mstore(0, shl(224, 0x4e487b71)) mstore(0, shl(224, 0x4e487b71))
mstore(4, 0x11) mstore(4, 0x11)
revert(0, 0x24) revert(0, 0x24)
} }
mstore(_1, sum) let memPos := mload(_1)
return(_1, 32) mstore(memPos, sum)
return(memPos, 32)
} }
case 0x793816ec { case 0x793816ec {
if callvalue() { revert(0, 0) } if callvalue() { revert(0, 0) }
if slt(add(calldatasize(), not(3)), 0) { revert(0, 0) } if slt(add(calldatasize(), not(3)), 0) { revert(0, 0) }
let _4 := sload(/** @src 0:159:178 \"int public stateVar\" */ 0) let _3 := sload(/** @src 0:159:178 \"int public stateVar\" */ 0)
/// @src 0:79:435 \"contract C...\" /// @src 0:79:435 \"contract C...\"
let memPos := mload(_2) let memPos_1 := mload(_1)
mstore(memPos, _4) mstore(memPos_1, _3)
return(memPos, 32) return(memPos_1, 32)
} }
case 0x9942ec6f { case 0x9942ec6f {
if callvalue() { revert(0, 0) } if callvalue() { revert(0, 0) }
if slt(add(calldatasize(), not(3)), 0) { revert(0, 0) } if slt(add(calldatasize(), not(3)), 0) { revert(0, 0) }
let _5 := sload(/** @src 0:329:339 \"stateVar++\" */ 0x00) let _4 := sload(/** @src 0:329:339 \"stateVar++\" */ 0x00)
/// @src 0:79:435 \"contract C...\" /// @src 0:79:435 \"contract C...\"
if eq(_5, sub(shl(255, 1), 1)) if eq(_4, sub(shl(255, 1), 1))
{ {
mstore(0, shl(224, 0x4e487b71)) mstore(0, shl(224, 0x4e487b71))
mstore(4, 0x11) mstore(4, 0x11)
revert(0, 0x24) revert(0, 0x24)
} }
sstore(/** @src 0:329:339 \"stateVar++\" */ 0x00, /** @src 0:79:435 \"contract C...\" */ add(_5, 1)) sstore(/** @src 0:329:339 \"stateVar++\" */ 0x00, /** @src 0:79:435 \"contract C...\" */ add(_4, 1))
let _6 := sload(/** @src 0:399:407 \"stateVar\" */ 0x00) let _5 := sload(/** @src 0:399:407 \"stateVar\" */ 0x00)
/// @src 0:410:418 \"this.f()\" /// @src 0:410:418 \"this.f()\"
let _7 := /** @src 0:79:435 \"contract C...\" */ mload(_2) let _6 := /** @src 0:79:435 \"contract C...\" */ mload(_1)
/// @src 0:410:418 \"this.f()\" /// @src 0:410:418 \"this.f()\"
mstore(_7, /** @src 0:79:435 \"contract C...\" */ shl(228, 0x026121ff)) mstore(_6, /** @src 0:79:435 \"contract C...\" */ shl(228, 0x026121ff))
/// @src 0:410:418 \"this.f()\" /// @src 0:410:418 \"this.f()\"
let _8 := staticcall(gas(), /** @src 0:410:414 \"this\" */ address(), /** @src 0:410:418 \"this.f()\" */ _7, /** @src 0:79:435 \"contract C...\" */ 4, /** @src 0:410:418 \"this.f()\" */ _7, 32) 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(_8) if iszero(_7)
{ {
/// @src 0:79:435 \"contract C...\" /// @src 0:79:435 \"contract C...\"
let pos := mload(_2) let pos := mload(_1)
returndatacopy(pos, 0, returndatasize()) returndatacopy(pos, 0, returndatasize())
revert(pos, returndatasize()) revert(pos, returndatasize())
} }
/// @src 0:410:418 \"this.f()\" /// @src 0:410:418 \"this.f()\"
let expr := /** @src -1:-1:-1 */ 0 let expr := /** @src -1:-1:-1 */ 0
/// @src 0:410:418 \"this.f()\" /// @src 0:410:418 \"this.f()\"
if _8 if _7
{ {
let _9 := 32 let _8 := 32
if gt(_9, returndatasize()) { _9 := returndatasize() } if gt(_8, returndatasize()) { _8 := returndatasize() }
/// @src 0:79:435 \"contract C...\" /// @src 0:79:435 \"contract C...\"
let newFreePtr := add(_7, and(add(_9, 31), not(31))) let newFreePtr := add(_6, and(add(_8, 31), not(31)))
if or(gt(newFreePtr, 0xffffffffffffffff), lt(newFreePtr, _7)) if or(gt(newFreePtr, 0xffffffffffffffff), lt(newFreePtr, _6))
{ {
mstore(0, shl(224, 0x4e487b71)) mstore(0, shl(224, 0x4e487b71))
mstore(4, 0x41) mstore(4, 0x41)
revert(0, 0x24) revert(0, 0x24)
} }
mstore(_2, newFreePtr) mstore(_1, newFreePtr)
if slt(sub(/** @src 0:410:418 \"this.f()\" */ add(_7, _9), /** @src 0:79:435 \"contract C...\" */ _7), /** @src 0:410:418 \"this.f()\" */ 32) 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)
/// @src 0:79:435 \"contract C...\" /// @src 0:79:435 \"contract C...\"
{ revert(0, 0) } { revert(0, 0) }
/// @src 0:410:418 \"this.f()\" /// @src 0:410:418 \"this.f()\"
expr := /** @src 0:79:435 \"contract C...\" */ mload(_7) expr := /** @src 0:79:435 \"contract C...\" */ mload(_6)
} }
/// @src 0:399:418 \"stateVar + this.f()\" /// @src 0:399:418 \"stateVar + this.f()\"
let expr_1 := checked_add_int256(_6, expr) let expr_1 := checked_add_int256(_5, expr)
/// @src 0:392:429 \"return stateVar + this.f() + immutVar\" /// @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\")) 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...\" /// @src 0:79:435 \"contract C...\"
let memPos_1 := mload(_2) let memPos_2 := mload(_1)
mstore(memPos_1, var) mstore(memPos_2, var)
return(memPos_1, /** @src 0:410:418 \"this.f()\" */ 32) return(memPos_2, /** @src 0:410:418 \"this.f()\" */ 32)
} }
case /** @src 0:79:435 \"contract C...\" */ 0xa00b982b { case /** @src 0:79:435 \"contract C...\" */ 0xa00b982b {
if callvalue() { revert(0, 0) } if callvalue() { revert(0, 0) }
if slt(add(calldatasize(), not(3)), 0) { revert(0, 0) } if slt(add(calldatasize(), not(3)), 0) { revert(0, 0) }
let memPos_2 := mload(_2) let memPos_3 := mload(_1)
mstore(memPos_2, /** @src 0:124:126 \"41\" */ 0x29) mstore(memPos_3, /** @src 0:124:126 \"41\" */ 0x29)
/// @src 0:79:435 \"contract C...\" /// @src 0:79:435 \"contract C...\"
return(memPos_2, 32) return(memPos_3, 32)
} }
} }
revert(0, 0) revert(0, 0)
@ -1500,9 +1500,8 @@ object \"D_72\" {
code { code {
{ {
/// @src 1:91:166 \"contract D is C(3)...\" /// @src 1:91:166 \"contract D is C(3)...\"
let _1 := memoryguard(0x80) let _1 := 64
let _2 := 64 mstore(_1, memoryguard(0x80))
mstore(_2, _1)
if iszero(lt(calldatasize(), 4)) if iszero(lt(calldatasize(), 4))
{ {
switch shr(224, calldataload(0)) switch shr(224, calldataload(0))
@ -1510,91 +1509,92 @@ object \"D_72\" {
if callvalue() { revert(0, 0) } if callvalue() { revert(0, 0) }
if slt(add(calldatasize(), not(3)), 0) { revert(0, 0) } if slt(add(calldatasize(), not(3)), 0) { revert(0, 0) }
/// @src 0:297:305 \"immutVar\" /// @src 0:297:305 \"immutVar\"
let _3 := loadimmutable(\"8\") let _2 := loadimmutable(\"8\")
/// @src 1:91:166 \"contract D is C(3)...\" /// @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) let sum := add(/** @src 0:124:126 \"41\" */ 0x29, /** @src 1:91:166 \"contract D is C(3)...\" */ _2)
if and(1, slt(sum, _3)) if and(1, slt(sum, _2))
{ {
mstore(0, shl(224, 0x4e487b71)) mstore(0, shl(224, 0x4e487b71))
mstore(4, 0x11) mstore(4, 0x11)
revert(0, 0x24) revert(0, 0x24)
} }
mstore(_1, sum) let memPos := mload(_1)
return(_1, 32) mstore(memPos, sum)
return(memPos, 32)
} }
case 0x793816ec { case 0x793816ec {
if callvalue() { revert(0, 0) } if callvalue() { revert(0, 0) }
if slt(add(calldatasize(), not(3)), 0) { revert(0, 0) } if slt(add(calldatasize(), not(3)), 0) { revert(0, 0) }
let _4 := sload(/** @src 0:159:178 \"int public stateVar\" */ 0) let _3 := sload(/** @src 0:159:178 \"int public stateVar\" */ 0)
/// @src 1:91:166 \"contract D is C(3)...\" /// @src 1:91:166 \"contract D is C(3)...\"
let memPos := mload(_2) let memPos_1 := mload(_1)
mstore(memPos, _4) mstore(memPos_1, _3)
return(memPos, 32) return(memPos_1, 32)
} }
case 0x9942ec6f { case 0x9942ec6f {
if callvalue() { revert(0, 0) } if callvalue() { revert(0, 0) }
if slt(add(calldatasize(), not(3)), 0) { revert(0, 0) } if slt(add(calldatasize(), not(3)), 0) { revert(0, 0) }
let _5 := sload(/** @src 0:329:339 \"stateVar++\" */ 0x00) let _4 := sload(/** @src 0:329:339 \"stateVar++\" */ 0x00)
/// @src 1:91:166 \"contract D is C(3)...\" /// @src 1:91:166 \"contract D is C(3)...\"
if eq(_5, sub(shl(255, 1), 1)) if eq(_4, sub(shl(255, 1), 1))
{ {
mstore(0, shl(224, 0x4e487b71)) mstore(0, shl(224, 0x4e487b71))
mstore(4, 0x11) mstore(4, 0x11)
revert(0, 0x24) revert(0, 0x24)
} }
sstore(/** @src 0:329:339 \"stateVar++\" */ 0x00, /** @src 1:91:166 \"contract D is C(3)...\" */ add(_5, 1)) sstore(/** @src 0:329:339 \"stateVar++\" */ 0x00, /** @src 1:91:166 \"contract D is C(3)...\" */ add(_4, 1))
let _6 := sload(/** @src 0:399:407 \"stateVar\" */ 0x00) let _5 := sload(/** @src 0:399:407 \"stateVar\" */ 0x00)
/// @src 0:410:418 \"this.f()\" /// @src 0:410:418 \"this.f()\"
let _7 := /** @src 1:91:166 \"contract D is C(3)...\" */ mload(_2) let _6 := /** @src 1:91:166 \"contract D is C(3)...\" */ mload(_1)
/// @src 0:410:418 \"this.f()\" /// @src 0:410:418 \"this.f()\"
mstore(_7, /** @src 1:91:166 \"contract D is C(3)...\" */ shl(228, 0x026121ff)) mstore(_6, /** @src 1:91:166 \"contract D is C(3)...\" */ shl(228, 0x026121ff))
/// @src 0:410:418 \"this.f()\" /// @src 0:410:418 \"this.f()\"
let _8 := staticcall(gas(), /** @src 0:410:414 \"this\" */ address(), /** @src 0:410:418 \"this.f()\" */ _7, /** @src 1:91:166 \"contract D is C(3)...\" */ 4, /** @src 0:410:418 \"this.f()\" */ _7, 32) 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(_8) if iszero(_7)
{ {
/// @src 1:91:166 \"contract D is C(3)...\" /// @src 1:91:166 \"contract D is C(3)...\"
let pos := mload(_2) let pos := mload(_1)
returndatacopy(pos, 0, returndatasize()) returndatacopy(pos, 0, returndatasize())
revert(pos, returndatasize()) revert(pos, returndatasize())
} }
/// @src 0:410:418 \"this.f()\" /// @src 0:410:418 \"this.f()\"
let expr := /** @src -1:-1:-1 */ 0 let expr := /** @src -1:-1:-1 */ 0
/// @src 0:410:418 \"this.f()\" /// @src 0:410:418 \"this.f()\"
if _8 if _7
{ {
let _9 := 32 let _8 := 32
if gt(_9, returndatasize()) { _9 := returndatasize() } if gt(_8, returndatasize()) { _8 := returndatasize() }
/// @src 1:91:166 \"contract D is C(3)...\" /// @src 1:91:166 \"contract D is C(3)...\"
let newFreePtr := add(_7, and(add(_9, 31), not(31))) let newFreePtr := add(_6, and(add(_8, 31), not(31)))
if or(gt(newFreePtr, 0xffffffffffffffff), lt(newFreePtr, _7)) if or(gt(newFreePtr, 0xffffffffffffffff), lt(newFreePtr, _6))
{ {
mstore(0, shl(224, 0x4e487b71)) mstore(0, shl(224, 0x4e487b71))
mstore(4, 0x41) mstore(4, 0x41)
revert(0, 0x24) revert(0, 0x24)
} }
mstore(_2, newFreePtr) mstore(_1, newFreePtr)
if slt(sub(/** @src 0:410:418 \"this.f()\" */ add(_7, _9), /** @src 1:91:166 \"contract D is C(3)...\" */ _7), /** @src 0:410:418 \"this.f()\" */ 32) 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)
/// @src 1:91:166 \"contract D is C(3)...\" /// @src 1:91:166 \"contract D is C(3)...\"
{ revert(0, 0) } { revert(0, 0) }
/// @src 0:410:418 \"this.f()\" /// @src 0:410:418 \"this.f()\"
expr := /** @src 1:91:166 \"contract D is C(3)...\" */ mload(_7) expr := /** @src 1:91:166 \"contract D is C(3)...\" */ mload(_6)
} }
/// @src 0:399:418 \"stateVar + this.f()\" /// @src 0:399:418 \"stateVar + this.f()\"
let expr_1 := checked_add_int256(_6, expr) let expr_1 := checked_add_int256(_5, expr)
/// @src 0:392:429 \"return stateVar + this.f() + immutVar\" /// @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\")) 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)...\" /// @src 1:91:166 \"contract D is C(3)...\"
let memPos_1 := mload(_2) let memPos_2 := mload(_1)
mstore(memPos_1, var) mstore(memPos_2, var)
return(memPos_1, /** @src 0:410:418 \"this.f()\" */ 32) return(memPos_2, /** @src 0:410:418 \"this.f()\" */ 32)
} }
case /** @src 1:91:166 \"contract D is C(3)...\" */ 0xa00b982b { case /** @src 1:91:166 \"contract D is C(3)...\" */ 0xa00b982b {
if callvalue() { revert(0, 0) } if callvalue() { revert(0, 0) }
if slt(add(calldatasize(), not(3)), 0) { revert(0, 0) } if slt(add(calldatasize(), not(3)), 0) { revert(0, 0) }
let memPos_2 := mload(_2) let memPos_3 := mload(_1)
mstore(memPos_2, /** @src 0:124:126 \"41\" */ 0x29) mstore(memPos_3, /** @src 0:124:126 \"41\" */ 0x29)
/// @src 1:91:166 \"contract D is C(3)...\" /// @src 1:91:166 \"contract D is C(3)...\"
return(memPos_2, 32) return(memPos_3, 32)
} }
} }
revert(0, 0) revert(0, 0)

View File

@ -24,6 +24,6 @@ contract C {
// ---- // ----
// library: L // library: L
// f() -> 8, 7, 1, 2, 7, 12 // f() -> 8, 7, 1, 2, 7, 12
// gas irOptimized: 166723 // gas irOptimized: 166726
// gas legacy: 169283 // gas legacy: 169283
// gas legacyOptimized: 167248 // gas legacyOptimized: 167248

View File

@ -33,7 +33,7 @@ contract C {
// f_which(uint256[],uint256[2],uint256): 0x40, 1, 2, 1, 5, 6 -> 0x20, 0x40, 5, 2 // f_which(uint256[],uint256[2],uint256): 0x40, 1, 2, 1, 5, 6 -> 0x20, 0x40, 5, 2
// f_which(uint256[],uint256[2],uint256): 0x40, 1, 2, 1 -> FAILURE // f_which(uint256[],uint256[2],uint256): 0x40, 1, 2, 1 -> FAILURE
// f_storage(uint256[],uint256[2]): 0x20, 1, 2 -> 0x20, 0x60, 0x20, 1, 2 // f_storage(uint256[],uint256[2]): 0x20, 1, 2 -> 0x20, 0x60, 0x20, 1, 2
// gas irOptimized: 111732 // gas irOptimized: 111724
// gas legacy: 112944 // gas legacy: 112944
// gas legacyOptimized: 112092 // gas legacyOptimized: 112092
// f_storage(uint256[],uint256[2]): 0x40, 1, 2, 5, 6 -> 0x20, 0x80, 0x20, 2, 5, 6 // f_storage(uint256[],uint256[2]): 0x40, 1, 2, 5, 6 -> 0x20, 0x80, 0x20, 2, 5, 6

View File

@ -18,10 +18,10 @@ contract C {
// EVMVersion: >homestead // EVMVersion: >homestead
// ---- // ----
// h(uint256[2][]): 0x20, 3, 123, 124, 223, 224, 323, 324 -> 32, 256, 0x20, 3, 123, 124, 223, 224, 323, 324 // h(uint256[2][]): 0x20, 3, 123, 124, 223, 224, 323, 324 -> 32, 256, 0x20, 3, 123, 124, 223, 224, 323, 324
// gas irOptimized: 180889 // gas irOptimized: 180793
// gas legacy: 184830 // gas legacy: 184830
// gas legacyOptimized: 181493 // gas legacyOptimized: 181493
// i(uint256[2][2]): 123, 124, 223, 224 -> 32, 128, 123, 124, 223, 224 // i(uint256[2][2]): 123, 124, 223, 224 -> 32, 128, 123, 124, 223, 224
// gas irOptimized: 112425 // gas irOptimized: 112417
// gas legacy: 115398 // gas legacy: 115398
// gas legacyOptimized: 112982 // gas legacyOptimized: 112982

View File

@ -21,6 +21,6 @@ contract c {
} }
// ---- // ----
// test() -> 3, 4 // test() -> 3, 4
// gas irOptimized: 169620 // gas irOptimized: 169618
// gas legacy: 175424 // gas legacy: 175424
// gas legacyOptimized: 172535 // gas legacyOptimized: 172535

View File

@ -11,6 +11,6 @@ contract c {
} }
// ---- // ----
// test() -> 9, 4 // test() -> 9, 4
// gas irOptimized: 123230 // gas irOptimized: 123227
// gas legacy: 123567 // gas legacy: 123567
// gas legacyOptimized: 123202 // gas legacyOptimized: 123202

View File

@ -45,7 +45,7 @@ contract C {
} }
// ---- // ----
// copyExternalStorageArrayOfFunctionType() -> true // copyExternalStorageArrayOfFunctionType() -> true
// gas irOptimized: 104770 // gas irOptimized: 104735
// gas legacy: 108554 // gas legacy: 108554
// gas legacyOptimized: 102413 // gas legacyOptimized: 102413
// copyInternalArrayOfFunctionType() -> true // copyInternalArrayOfFunctionType() -> true

View File

@ -17,4 +17,4 @@ contract C {
// compileViaYul: true // compileViaYul: true
// ---- // ----
// f((uint128,uint64,uint128)[]): 0x20, 3, 0, 0, 12, 0, 11, 0, 10, 0, 0 -> 10, 11, 12 // f((uint128,uint64,uint128)[]): 0x20, 3, 0, 0, 12, 0, 11, 0, 10, 0, 0 -> 10, 11, 12
// gas irOptimized: 119937 // gas irOptimized: 119874

View File

@ -13,6 +13,6 @@ contract C {
} }
// ---- // ----
// f() -> 2, 3, 4 // f() -> 2, 3, 4
// gas irOptimized: 115182 // gas irOptimized: 115241
// gas legacy: 126129 // gas legacy: 126129
// gas legacyOptimized: 120622 // gas legacyOptimized: 120622

View File

@ -16,6 +16,6 @@ contract c {
} }
// ---- // ----
// test1() -> true // test1() -> true
// gas irOptimized: 219669 // gas irOptimized: 219658
// gas legacy: 254056 // gas legacy: 254056
// gas legacyOptimized: 246892 // gas legacyOptimized: 246892

View File

@ -40,7 +40,7 @@ contract C {
// copyFromStorageShort() // copyFromStorageShort()
// x() -> 0x20, 3, 0x6162630000000000000000000000000000000000000000000000000000000000 // x() -> 0x20, 3, 0x6162630000000000000000000000000000000000000000000000000000000000
// copyFromStorageLong() // copyFromStorageLong()
// gas irOptimized: 121087 // gas irOptimized: 121143
// gas legacy: 121904 // gas legacy: 121904
// gas legacyOptimized: 121398 // gas legacyOptimized: 121398
// x() -> 0x20, 0x25, 0x3132333435363738393031323334353637383930313233343536373839303132, 0x3334353637000000000000000000000000000000000000000000000000000000 // x() -> 0x20, 0x25, 0x3132333435363738393031323334353637383930313233343536373839303132, 0x3334353637000000000000000000000000000000000000000000000000000000

View File

@ -24,6 +24,6 @@ contract Main {
} }
// ---- // ----
// f(uint256): 0x34 -> 0x46bddb1178e94d7f2892ff5f366840eb658911794f2c3a44c450aa2c505186c1 // f(uint256): 0x34 -> 0x46bddb1178e94d7f2892ff5f366840eb658911794f2c3a44c450aa2c505186c1
// gas irOptimized: 112093 // gas irOptimized: 112085
// gas legacy: 125162 // gas legacy: 125162
// gas legacyOptimized: 113012 // gas legacyOptimized: 113012

View File

@ -24,6 +24,6 @@ contract Creator {
} }
// ---- // ----
// f(uint256,address[]): 7, 0x40, 10, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 -> 7, 8 // f(uint256,address[]): 7, 0x40, 10, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 -> 7, 8
// gas irOptimized: 424529 // gas irOptimized: 424507
// gas legacy: 581443 // gas legacy: 581443
// gas legacyOptimized: 444588 // gas legacyOptimized: 444588

View File

@ -24,6 +24,6 @@ contract Creator {
} }
// ---- // ----
// f(uint256,bytes): 7, 0x40, 78, "abcdefghijklmnopqrstuvwxyzabcdef", "ghijklmnopqrstuvwxyzabcdefghijkl", "mnopqrstuvwxyz" -> 7, "h" // f(uint256,bytes): 7, 0x40, 78, "abcdefghijklmnopqrstuvwxyzabcdef", "ghijklmnopqrstuvwxyzabcdefghijkl", "mnopqrstuvwxyz" -> 7, "h"
// gas irOptimized: 268926 // gas irOptimized: 268920
// gas legacy: 418462 // gas legacy: 418462
// gas legacyOptimized: 291760 // gas legacyOptimized: 291760

View File

@ -18,7 +18,7 @@ contract test {
} }
// ---- // ----
// set(uint8,uint8,uint8,uint8,uint8): 1, 21, 22, 42, 43 -> 0, 0, 0, 0 // set(uint8,uint8,uint8,uint8,uint8): 1, 21, 22, 42, 43 -> 0, 0, 0, 0
// gas irOptimized: 111656 // gas irOptimized: 111658
// gas legacy: 113748 // gas legacy: 113748
// gas legacyOptimized: 111772 // gas legacyOptimized: 111772
// get(uint8): 1 -> 21, 22, 42, 43 // get(uint8): 1 -> 21, 22, 42, 43

View File

@ -15,7 +15,7 @@ contract C {
} }
// ---- // ----
// constructor(): 3 -> // constructor(): 3 ->
// gas irOptimized: 123554 // gas irOptimized: 123338
// gas legacy: 197645 // gas legacy: 197645
// gas legacyOptimized: 137678 // gas legacyOptimized: 137678
// f() -> 84, 23 // f() -> 84, 23

View File

@ -19,6 +19,6 @@ contract Test {
// ---- // ----
// library: Lib // library: Lib
// f() -> 1, 0, 0x2a, 0x17, 0, 0x63 // f() -> 1, 0, 0x2a, 0x17, 0, 0x63
// gas irOptimized: 119599 // gas irOptimized: 119634
// gas legacy: 124674 // gas legacy: 124674
// gas legacyOptimized: 119669 // gas legacyOptimized: 119669

View File

@ -17,6 +17,6 @@ contract Test {
// ---- // ----
// library: Lib // library: Lib
// f() -> 1, 0, 0x2a, 0x17, 0, 0x63 // f() -> 1, 0, 0x2a, 0x17, 0, 0x63
// gas irOptimized: 120223 // gas irOptimized: 120235
// gas legacy: 125109 // gas legacy: 125109
// gas legacyOptimized: 120128 // gas legacyOptimized: 120128

View File

@ -21,6 +21,6 @@ contract A {
// EVMVersion: >=constantinople // EVMVersion: >=constantinople
// ---- // ----
// f(), 10 ether -> 3007, 3008, 3009 // f(), 10 ether -> 3007, 3008, 3009
// gas irOptimized: 253041 // gas irOptimized: 254250
// gas legacy: 381063 // gas legacy: 381063
// gas legacyOptimized: 279694 // gas legacyOptimized: 279694

View File

@ -52,14 +52,14 @@ contract C {
} }
// ---- // ----
// from_memory() -> 0x20, 0x60, 0xa0, 0x15, 3, 0x666F6F0000000000000000000000000000000000000000000000000000000000, 2, 13, 14 // from_memory() -> 0x20, 0x60, 0xa0, 0x15, 3, 0x666F6F0000000000000000000000000000000000000000000000000000000000, 2, 13, 14
// gas irOptimized: 123113 // gas irOptimized: 123089
// gas legacy: 130227 // gas legacy: 130227
// gas legacyOptimized: 128761 // gas legacyOptimized: 128761
// from_state() -> 0x20, 0x60, 0xa0, 21, 3, 0x666F6F0000000000000000000000000000000000000000000000000000000000, 2, 13, 14 // from_state() -> 0x20, 0x60, 0xa0, 21, 3, 0x666F6F0000000000000000000000000000000000000000000000000000000000, 2, 13, 14
// gas irOptimized: 121780 // gas irOptimized: 121789
// gas legacy: 123282 // gas legacy: 123282
// gas legacyOptimized: 121871 // gas legacyOptimized: 121871
// from_calldata((bytes,uint16[],uint16)): 0x20, 0x60, 0xa0, 21, 3, 0x666F6F0000000000000000000000000000000000000000000000000000000000, 2, 13, 14 -> 0x20, 0x60, 0xa0, 0x15, 3, 0x666F6F0000000000000000000000000000000000000000000000000000000000, 2, 13, 14 // from_calldata((bytes,uint16[],uint16)): 0x20, 0x60, 0xa0, 21, 3, 0x666F6F0000000000000000000000000000000000000000000000000000000000, 2, 13, 14 -> 0x20, 0x60, 0xa0, 0x15, 3, 0x666F6F0000000000000000000000000000000000000000000000000000000000, 2, 13, 14
// gas irOptimized: 115157 // gas irOptimized: 115151
// gas legacy: 122516 // gas legacy: 122516
// gas legacyOptimized: 120807 // gas legacyOptimized: 120807

View File

@ -35,12 +35,12 @@ contract c {
} }
// ---- // ----
// set(uint256): 7 -> true // set(uint256): 7 -> true
// gas irOptimized: 110073 // gas irOptimized: 110062
// gas legacy: 110597 // gas legacy: 110597
// gas legacyOptimized: 110003 // gas legacyOptimized: 110003
// retrieve(uint256): 7 -> 1, 3, 4, 2 // retrieve(uint256): 7 -> 1, 3, 4, 2
// copy(uint256,uint256): 7, 8 -> true // copy(uint256,uint256): 7, 8 -> true
// gas irOptimized: 118590 // gas irOptimized: 118581
// gas legacy: 119147 // gas legacy: 119147
// gas legacyOptimized: 118619 // gas legacyOptimized: 118619
// retrieve(uint256): 7 -> 1, 3, 4, 2 // retrieve(uint256): 7 -> 1, 3, 4, 2

View File

@ -30,7 +30,7 @@ contract test {
// ---- // ----
// check() -> false // check() -> false
// set() -> // set() ->
// gas irOptimized: 134439 // gas irOptimized: 134431
// gas legacy: 135246 // gas legacy: 135246
// gas legacyOptimized: 134062 // gas legacyOptimized: 134062
// check() -> true // check() -> true

View File

@ -14,7 +14,7 @@ contract C {
} }
// ---- // ----
// constructor() -> // constructor() ->
// gas irOptimized: 166662 // gas irOptimized: 166659
// gas legacy: 241796 // gas legacy: 241796
// gas legacyOptimized: 153454 // gas legacyOptimized: 153454
// initCode() -> 0x20, 0 // initCode() -> 0x20, 0

View File

@ -33,6 +33,6 @@ contract C {
} }
// ---- // ----
// f(bytes): 0x20, 0x5, "abcde" -> 0 // f(bytes): 0x20, 0x5, "abcde" -> 0
// gas irOptimized: 242337 // gas irOptimized: 242334
// gas legacy: 243284 // gas legacy: 243284
// gas legacyOptimized: 242420 // gas legacyOptimized: 242420

View File

@ -19,7 +19,7 @@ contract test {
} }
// ---- // ----
// constructor(), 20 wei -> // constructor(), 20 wei ->
// gas irOptimized: 172407 // gas irOptimized: 172839
// gas legacy: 252296 // gas legacy: 252296
// gas legacyOptimized: 180352 // gas legacyOptimized: 180352
// sendAmount(uint256): 5 -> 8 // sendAmount(uint256): 5 -> 8

View File

@ -18,7 +18,7 @@ contract test {
} }
// ---- // ----
// constructor(), 20 wei -> // constructor(), 20 wei ->
// gas irOptimized: 173271 // gas irOptimized: 173703
// gas legacy: 253820 // gas legacy: 253820
// gas legacyOptimized: 180784 // gas legacyOptimized: 180784
// sendAmount(uint256): 5 -> 8 // sendAmount(uint256): 5 -> 8

View File

@ -26,25 +26,25 @@
// { // {
// { // {
// let x := calldataload(0) // let x := calldataload(0)
// let _2 := 0xf // let _1 := 0xf
// let _5 := and(shr(248, x), 0) // let _4 := and(shr(248, x), 0)
// let _10 := 0xff // let _9 := 0xff
// let a := and(_5, 255) // let a := and(_4, 255)
// let _14 := and(shr(4, x), 3855) // let _13 := and(shr(4, x), 3855)
// let _15 := 12 // let _14 := 12
// let b := shl(_15, _14) // let b := shl(_14, _13)
// let _19 := and(shr(4, x), 3855) // let _18 := and(shr(4, x), 3855)
// let c := shl(_15, _19) // let c := shl(_14, _18)
// let d := shl(_15, and(shr(255, x), 0)) // let d := shl(_14, and(shr(255, x), 0))
// let e := shl(_10, _19) // let e := shl(_9, _18)
// let f := 0 // let f := 0
// let g := 0 // let g := 0
// sstore(10, a) // sstore(10, a)
// sstore(11, b) // sstore(11, b)
// sstore(_15, c) // sstore(_14, c)
// sstore(13, d) // sstore(13, d)
// sstore(14, e) // sstore(14, e)
// sstore(_2, f) // sstore(_1, f)
// sstore(16, g) // sstore(16, g)
// } // }
// } // }

View File

@ -27,8 +27,8 @@
// let b := and(shr(8, x), 0xfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0) // let b := and(shr(8, x), 0xfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0)
// let c := and(shr(8, x), 0x0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) // let c := and(shr(8, x), 0x0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff)
// let d := and(shl(8, x), 0x0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00) // let d := and(shl(8, x), 0x0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00)
// let _14 := 150 // let _13 := 150
// let e := shl(_14, and(shl(148, x), 0x3ffffffffffffffffffffffffff0000000000000000000000000000000000000)) // let e := shl(_13, and(shl(148, x), 0x3ffffffffffffffffffffffffff0000000000000000000000000000000000000))
// sstore(15, x) // sstore(15, x)
// sstore(16, a) // sstore(16, a)
// sstore(17, b) // sstore(17, b)

View File

@ -14,9 +14,8 @@
// { // {
// { // {
// let _1 := 0xffffffffffffffffffffffffffffffffffffffff // let _1 := 0xffffffffffffffffffffffffffffffffffffffff
// let _2 := 0 // let _2 := 0x20
// let _3 := 0x20 // let a := and(create2(0, 0, _2, 0), _1)
// let a := and(create2(0, 0, _3, _2), _1) // sstore(a, and(_1, create2(0, 0, _2, 0)))
// sstore(a, and(_1, create2(0, 0, _3, 0)))
// } // }
// } // }

View File

@ -16,8 +16,8 @@
// { // {
// let _1 := 0x20 // let _1 := 0x20
// let c := create(0, 0, _1) // let c := create(0, 0, _1)
// let _4 := 0xffffffffffffffffffffffffffffffffffffffff // let _2 := 0xffffffffffffffffffffffffffffffffffffffff
// let a := and(c, _4) // let a := and(c, _2)
// sstore(a, and(_4, create(0, 0, _1))) // sstore(a, and(_2, create(0, 0, _1)))
// } // }
// } // }

View File

@ -17,8 +17,8 @@
// let t := calldataload(0) // let t := calldataload(0)
// sstore(0, iszero(t)) // sstore(0, iszero(t))
// sstore(1, 1) // sstore(1, 1)
// let _8 := 2 // let _5 := 2
// sstore(_8, shl(t, 1)) // sstore(_5, shl(t, 1))
// sstore(3, exp(8, t)) // sstore(3, exp(8, t))
// sstore(4, sub(iszero(and(t, 1)), and(t, 1))) // sstore(4, sub(iszero(and(t, 1)), and(t, 1)))
// } // }

View File

@ -7,8 +7,4 @@
// ---- // ----
// step: expressionSimplifier // step: expressionSimplifier
// //
// { // { { sstore(0, 0) } }
// {
// sstore(0, sub(calldataload(0), calldataload(0)))
// }
// }

View File

@ -13,12 +13,12 @@
// //
// { // {
// { // {
// let _2 := calldataload(0) // let _1 := calldataload(0)
// let _5 := 0xff // let _4 := 0xff
// let a := shr(248, _2) // let a := shr(248, _1)
// let b := shr(248, calldataload(0)) // let b := shr(248, _1)
// let c := and(shr(249, calldataload(0)), 0xfa) // let c := and(shr(249, _1), 0xfa)
// let d := and(shr(247, calldataload(0)), _5) // let d := and(shr(247, _1), _4)
// sstore(a, b) // sstore(a, b)
// sstore(c, d) // sstore(c, d)
// } // }

View File

@ -15,10 +15,10 @@
// { // {
// let a := 0 // let a := 0
// let b := 0 // let b := 0
// let _8 := calldataload(2) // let _7 := calldataload(2)
// let _9 := 255 // let _8 := 255
// let c := shl(_9, _8) // let c := shl(_8, _7)
// let d := shr(_9, calldataload(3)) // let d := shr(_8, calldataload(3))
// sstore(a, b) // sstore(a, b)
// sstore(c, d) // sstore(c, d)
// } // }

View File

@ -13,9 +13,8 @@
// { // {
// { // {
// revert(0, 0) // revert(0, 0)
// let _4 := 0
// pop(call(0, 0, 0, 0, 0, 0, 0)) // pop(call(0, 0, 0, 0, 0, 0, 0))
// revert(0, _4) // revert(0, 0)
// calldatacopy(0, calldataload(2), 0) // calldatacopy(0, calldataload(2), 0)
// return(0, 0) // return(0, 0)
// codecopy(0, calldataload(5), 0) // codecopy(0, calldataload(5), 0)

View File

@ -11,29 +11,28 @@
// step: expressionSplitter // step: expressionSplitter
// //
// { // {
// let _1 := 0 // let x := calldataload(0)
// let x := calldataload(_1) // let _1 := 3
// let _2 := 3 // let _2 := 2
// let _3 := 2 // let _3 := add(x, _2)
// let _4 := add(x, _3) // let _4 := mul(_3, _1)
// let _5 := mul(_4, _2) // if _4
// if _5
// { // {
// for { let a := 2 } // for { let a := 2 }
// lt(a, mload(a)) // lt(a, mload(a))
// { // {
// let _6 := 2 // let _5 := 2
// let _7 := mul(a, _6) // let _6 := mul(a, _5)
// a := add(a, _7) // a := add(a, _6)
// } // }
// { // {
// let _8 := 4 // let _7 := 4
// let _9 := 2 // let _8 := 2
// let _10 := add(a, _9) // let _9 := add(a, _8)
// let b := mul(_10, _8) // let b := mul(_9, _7)
// let _11 := 2 // let _10 := 2
// let _12 := mul(b, _11) // let _11 := mul(b, _10)
// sstore(b, _12) // sstore(b, _11)
// } // }
// } // }
// } // }

View File

@ -12,19 +12,18 @@
// let _1 := 3 // let _1 := 3
// let _2 := 7 // let _2 := 7
// let _3 := mload(_2) // let _3 := mload(_2)
// let _4 := 0 // let _4 := f(0, _3)
// let _5 := f(_4, _3) // let x := mul(_4, _1)
// let x := mul(_5, _1)
// function f(a, b) -> c // function f(a, b) -> c
// { // {
// let _6 := add(b, c) // let _5 := add(b, c)
// let _7 := mload(_6) // let _6 := mload(_5)
// c := mul(a, _7) // c := mul(a, _6)
// } // }
// let _8 := 2 // let _7 := 2
// let _9 := mload(_8) // let _8 := mload(_7)
// let _10 := 2 // let _9 := 2
// let _11 := mload(_10) // let _10 := mload(_9)
// let _12 := f(_11, _9) // let _11 := f(_10, _8)
// sstore(x, _12) // sstore(x, _11)
// } // }

View File

@ -20,9 +20,8 @@ object "main" {
// let _2 := mload(_1) // let _2 := mload(_1)
// let _3 := 1 // let _3 := 1
// let _4 := mload(_3) // let _4 := mload(_3)
// let _5 := 0 // let _5 := mload(0)
// let _6 := mload(_5) // datacopy(_5, _4, _2)
// datacopy(_6, _4, _2)
// } // }
// data "abc" hex"48656c6c6f2c20576f726c6421" // data "abc" hex"48656c6c6f2c20576f726c6421"
// } // }

View File

@ -10,25 +10,22 @@
// //
// { // {
// let x := 8 // let x := 8
// let _1 := 0 // let _1 := calldataload(0)
// let _2 := calldataload(_1) // let _2 := 2
// let _3 := 2 // let _3 := add(_2, _1)
// let _4 := add(_3, _2) // switch _3
// switch _4
// case 0 { // case 0 {
// let _5 := 2 // let _4 := 2
// let _6 := mload(_5) // let _5 := mload(_4)
// let _7 := 0 // sstore(0, _5)
// sstore(_7, _6)
// } // }
// default { // default {
// let _8 := 3 // let _6 := 3
// let _9 := mload(_8) // let _7 := mload(_6)
// let _10 := 0 // mstore(0, _7)
// mstore(_10, _9)
// } // }
// let _11 := 4 // let _8 := 4
// let _12 := 3 // let _9 := 3
// let _13 := mload(_12) // let _10 := mload(_9)
// x := add(_13, _11) // x := add(_10, _8)
// } // }

View File

@ -9,19 +9,19 @@
// //
// { // {
// { // {
// let a_2 := calldataload(0) // let a_1 := calldataload(0)
// let b_3 := 0 // let b_2 := 0
// let c_4 := 0 // let c_3 := 0
// b_3 := sload(mload(a_2)) // b_2 := sload(mload(a_1))
// c_4 := 3 // c_3 := 3
// let b3 := b_3 // let b3 := b_2
// let a_6 := c_4 // let a_5 := c_3
// let b_7 := 0 // let b_6 := 0
// let c_8 := 0 // let c_7 := 0
// b_7 := sload(mload(a_6)) // b_6 := sload(mload(a_5))
// c_8 := 3 // c_7 := 3
// let b4 := b_7 // let b4 := b_6
// let c4 := c_8 // let c4 := c_7
// } // }
// function f(a) -> b, c // function f(a) -> b, c
// { // {

View File

@ -13,12 +13,12 @@
// //
// { // {
// { // {
// let _2 := mload(0) // let _1 := mload(0)
// let a_10 := mload(1) // let a_8 := mload(1)
// let r_11 := 0 // let r_9 := 0
// a_10 := mload(a_10) // a_8 := mload(a_8)
// r_11 := add(a_10, calldatasize()) // r_9 := add(a_8, calldatasize())
// if gt(r_11, _2) { sstore(0, 2) } // if gt(r_9, _1) { sstore(0, 2) }
// } // }
// function f(a) -> r // function f(a) -> r
// { // {

View File

@ -13,10 +13,10 @@
// { // {
// { // {
// let verylongvariablename2_1 := 3 // let verylongvariablename2_1 := 3
// let verylongvariablename_4 := verylongvariablename2_1 // let verylongvariablename_3 := verylongvariablename2_1
// let verylongvariablename2_5 := 0 // let verylongvariablename2_4 := 0
// verylongvariablename2_5 := add(verylongvariablename_4, verylongvariablename_4) // verylongvariablename2_4 := add(verylongvariablename_3, verylongvariablename_3)
// mstore(0, verylongvariablename2_5) // mstore(0, verylongvariablename2_4)
// mstore(1, verylongvariablename2_1) // mstore(1, verylongvariablename2_1)
// } // }
// function verylongfunctionname(verylongvariablename) -> verylongvariablename2 // function verylongfunctionname(verylongvariablename) -> verylongvariablename2

View File

@ -30,10 +30,10 @@
// function f(x) // function f(x)
// { // {
// mstore(0, x) // mstore(0, x)
// let t_8 := 0 // let t_7 := 0
// t_8 := 2 // t_7 := 2
// mstore(7, t_8) // mstore(7, t_7)
// let x_1_9 := 10 // let x_1_8 := 10
// f(1) // f(1)
// mstore(1, x) // mstore(1, x)
// } // }

View File

@ -11,13 +11,13 @@
// //
// { // {
// { // {
// let a_3 := mload(0) // let a_2 := mload(0)
// let x_4 := 0 // let x_3 := 0
// let y_5 := 0 // let y_4 := 0
// x_4 := mul(a_3, a_3) // x_3 := mul(a_2, a_2)
// y_5 := add(a_3, x_4) // y_4 := add(a_2, x_3)
// let r := x_4 // let r := x_3
// mstore(r, y_5) // mstore(r, y_4)
// } // }
// function f(a) -> x, y // function f(a) -> x, y
// { // {

View File

@ -9,8 +9,8 @@
// //
// { // {
// { // {
// let a_2 := calldataload(0) // let a_1 := calldataload(0)
// a_2 := g() // a_1 := g()
// } // }
// function g() -> x // function g() -> x
// { // {

View File

@ -4,13 +4,15 @@
} }
f(mload(0)) f(mload(0))
} }
// ====
// EVMVersion: >=shanghai
// ---- // ----
// step: fullInliner // step: fullInliner
// //
// { // {
// { // {
// let a_3 := mload(0) // let a_2 := mload(0)
// sstore(a_3, a_3) // sstore(a_2, a_2)
// } // }
// function f(a) // function f(a)
// { sstore(a, a) } // { sstore(a, a) }

View File

@ -9,31 +9,33 @@
r := a r := a
} }
} }
// ====
// EVMVersion: >=shanghai
// ---- // ----
// step: fullInliner // step: fullInliner
// //
// { // {
// { // {
// let a_3 := 0 // let a_1 := 0
// let r_4 := 0 // let r_2 := 0
// sstore(a_3, 0) // sstore(a_1, 0)
// r_4 := a_3 // r_2 := a_1
// let x := r_4 // let x := r_2
// for { } // for { }
// f(x) // f(x)
// { // {
// let a_6 := x // let a_3 := x
// let r_7 := 0 // let r_4 := 0
// sstore(a_6, 0) // sstore(a_3, 0)
// r_7 := a_6 // r_4 := a_3
// x := r_7 // x := r_4
// } // }
// { // {
// let a_9 := x // let a_5 := x
// let r_10 := 0 // let r_6 := 0
// sstore(a_9, 0) // sstore(a_5, 0)
// r_10 := a_9 // r_6 := a_5
// let t := r_10 // let t := r_6
// } // }
// } // }
// function f(a) -> r // function f(a) -> r

View File

@ -7,8 +7,4 @@
// ---- // ----
// step: fullSimplify // step: fullSimplify
// //
// { // { { mstore(0, 0) } }
// {
// mstore(sub(calldataload(0), calldataload(0)), 0)
// }
// }

View File

@ -506,7 +506,7 @@
// for { } lt(i, length) { i := add(i, 1) } // for { } lt(i, length) { i := add(i, 1) }
// { // {
// if iszero(slt(add(src, _1), end)) { revert(0, 0) } // if iszero(slt(add(src, _1), end)) { revert(0, 0) }
// let dst_1 := allocateMemory_967() // let dst_1 := allocateMemory_902()
// let dst_2 := dst_1 // let dst_2 := dst_1
// let src_1 := src // let src_1 := src
// let _3 := add(src, 64) // let _3 := add(src, 64)
@ -553,7 +553,7 @@
// if gt(offset_1, _2) { revert(0, 0) } // if gt(offset_1, _2) { revert(0, 0) }
// value3 := abi_decode_array_array_uint256_memory_dyn(add(headStart, offset_1), dataEnd) // value3 := abi_decode_array_array_uint256_memory_dyn(add(headStart, offset_1), dataEnd)
// } // }
// function allocateMemory_967() -> memPtr // function allocateMemory_902() -> memPtr
// { // {
// memPtr := mload(64) // memPtr := mload(64)
// let newFreePtr := add(memPtr, 64) // let newFreePtr := add(memPtr, 64)

View File

@ -15,9 +15,9 @@
// { // {
// { // {
// let x := calldataload(0) // let x := calldataload(0)
// let _2 := 0x20 // let _1 := 0x20
// sstore(keccak256(_2, x), 2) // sstore(keccak256(_1, x), 2)
// mstore(0, 1) // mstore(0, 1)
// sstore(keccak256(_2, x), 3) // sstore(keccak256(_1, x), 3)
// } // }
// } // }

View File

@ -26,12 +26,12 @@
// let x := calldataload(0) // let x := calldataload(0)
// let y := calldataload(1) // let y := calldataload(1)
// let a := keccak256(x, y) // let a := keccak256(x, y)
// let _3 := 2 // let _2 := 2
// if calldataload(_3) { a := 8 } // if calldataload(_2) { a := 8 }
// sstore(keccak256(x, y), _3) // sstore(keccak256(x, y), _2)
// if calldataload(3) { x := 8 } // if calldataload(3) { x := 8 }
// sstore(keccak256(x, y), _3) // sstore(keccak256(x, y), _2)
// if calldataload(4) { y := 8 } // if calldataload(4) { y := 8 }
// sstore(keccak256(x, y), _3) // sstore(keccak256(x, y), _2)
// } // }
// } // }

View File

@ -28,13 +28,13 @@
// let y := calldataload(1) // let y := calldataload(1)
// let a := keccak256(x, y) // let a := keccak256(x, y)
// sstore(a, 2) // sstore(a, 2)
// let _4 := 10 // let _3 := 10
// a := calldataload(_4) // a := calldataload(_3)
// sstore(keccak256(x, y), 3) // sstore(keccak256(x, y), 3)
// x := _4 // x := _3
// sstore(keccak256(_4, y), 4) // sstore(keccak256(_3, y), 4)
// y := 9 // y := 9
// let d := keccak256(_4, y) // let d := keccak256(_3, y)
// sstore(d, 5) // sstore(d, 5)
// sstore(d, 6) // sstore(d, 6)
// } // }

View File

@ -24,12 +24,12 @@
// { // {
// mstore(0, 10) // mstore(0, 10)
// sstore(0, keccak256(0, 31)) // sstore(0, keccak256(0, 31))
// let _9 := keccak256(0, 30) // let _5 := keccak256(0, 30)
// let _10 := 1 // let _6 := 1
// sstore(_10, _9) // sstore(_6, _5)
// let _13 := keccak256(0, _10) // let _8 := keccak256(0, _6)
// let _14 := 2 // let _9 := 2
// sstore(_14, _13) // sstore(_9, _8)
// sstore(_14, keccak256(0, 0)) // sstore(_9, keccak256(0, 0))
// } // }
// } // }

View File

@ -27,11 +27,11 @@
// sstore(0, _1) // sstore(0, _1)
// pop(call(0, 0, 0, 0, 0, 0, 0)) // pop(call(0, 0, 0, 0, 0, 0, 0))
// sstore(0, mload(_2)) // sstore(0, mload(_2))
// let _17 := 10 // let _8 := 10
// mstore(_2, _17) // mstore(_2, _8)
// mstore8(calldataload(0), 4) // mstore8(calldataload(0), 4)
// sstore(0, mload(_2)) // sstore(0, mload(_2))
// mstore(_2, _17) // mstore(_2, _8)
// sstore(0, _17) // sstore(0, _8)
// } // }
// } // }

View File

@ -12,8 +12,10 @@
// //
// { // {
// { // {
// mstore(calldataload(0), msize()) // let _1 := msize()
// let _2 := calldataload(0)
// mstore(_2, _1)
// let t := mload(calldataload(10)) // let t := mload(calldataload(10))
// sstore(t, mload(calldataload(0))) // sstore(t, mload(_2))
// } // }
// } // }

View File

@ -14,10 +14,12 @@
// //
// { // {
// { // {
// mstore(calldataload(0), calldataload(10)) // let _2 := calldataload(10)
// let _5 := 1 // let _3 := calldataload(0)
// if calldataload(_5) { mstore(calldataload(0), _5) } // mstore(_3, _2)
// let _4 := 1
// if calldataload(_4) { mstore(_3, _4) }
// let t := mload(0) // let t := mload(0)
// sstore(t, mload(calldataload(0))) // sstore(t, mload(_3))
// } // }
// } // }

View File

@ -14,13 +14,11 @@
// //
// { // {
// { // {
// mstore(calldataload(0), calldataload(10)) // let _2 := calldataload(10)
// let _5 := 1 // let _3 := calldataload(0)
// if calldataload(_5) // mstore(_3, _2)
// { // let _4 := 1
// mstore(add(calldataload(0), 0x20), _5) // if calldataload(_4) { mstore(add(_3, 0x20), _4) }
// } // sstore(mload(add(_3, 0x20)), _2)
// let t := mload(add(calldataload(0), 0x20))
// sstore(t, mload(calldataload(0)))
// } // }
// } // }

View File

@ -14,12 +14,10 @@
// //
// { // {
// { // {
// let _3 := 1 // let _1 := calldataload(0)
// if calldataload(_3) // let x := mload(_1)
// { // let _2 := 1
// mstore(add(calldataload(0), 0x20), _3) // if calldataload(_2) { mstore(add(_1, 0x20), _2) }
// } // sstore(mload(add(_1, 0x20)), x)
// let t := mload(add(calldataload(0), 0x20))
// sstore(t, mload(calldataload(0)))
// } // }
// } // }

View File

@ -14,10 +14,12 @@
// //
// { // {
// { // {
// mstore(calldataload(0), calldataload(10)) // let _2 := calldataload(10)
// let _5 := 1 // let _3 := calldataload(0)
// if calldataload(_5) { mstore(0, _5) } // mstore(_3, _2)
// let _4 := 1
// if calldataload(_4) { mstore(0, _4) }
// let t := mload(0) // let t := mload(0)
// sstore(t, mload(calldataload(0))) // sstore(t, mload(_3))
// } // }
// } // }

View File

@ -13,7 +13,6 @@
// { // {
// let _2 := calldataload(10) // let _2 := calldataload(10)
// sstore(calldataload(0), _2) // sstore(calldataload(0), _2)
// let t := sload(_2) // mstore(sload(_2), _2)
// mstore(t, sload(calldataload(0)))
// } // }
// } // }

View File

@ -13,7 +13,6 @@
// { // {
// let _2 := calldataload(10) // let _2 := calldataload(10)
// mstore(calldataload(0), _2) // mstore(calldataload(0), _2)
// let t := mload(_2) // sstore(mload(_2), _2)
// sstore(t, mload(calldataload(0)))
// } // }
// } // }

View File

@ -23,23 +23,22 @@
// //
// { // {
// { // {
// let _1 := 0 // let _1 := 1
// let _2 := 1 // returndatacopy(0, _1, 0)
// returndatacopy(0, _2, _1) // calldatacopy(0, _1, 0)
// calldatacopy(0, _2, 0) // extcodecopy(_1, 0, _1, 0)
// extcodecopy(_2, 0, _2, 0) // codecopy(0, _1, 0)
// codecopy(0, _2, 0)
// log0(0, 0) // log0(0, 0)
// log1(0, 0, _2) // log1(0, 0, _1)
// log2(0, 0, _2, _2) // log2(0, 0, _1, _1)
// log3(0, 0, _2, _2, _2) // log3(0, 0, _1, _1, _1)
// log4(0, 0, _2, _2, _2, _2) // log4(0, 0, _1, _1, _1, _1)
// pop(create(_2, 0, 0)) // pop(create(_1, 0, 0))
// pop(create2(_2, 0, 0, _2)) // pop(create2(_1, 0, 0, _1))
// pop(call(_2, _2, _2, 0, 0, _2, 0)) // pop(call(_1, _1, _1, 0, 0, _1, 0))
// pop(callcode(_2, _2, _2, 0, 0, _2, 0)) // pop(callcode(_1, _1, _1, 0, 0, _1, 0))
// pop(delegatecall(_2, _2, 0, 0, _2, 0)) // pop(delegatecall(_1, _1, 0, 0, _1, 0))
// pop(staticcall(_2, _2, 0, 0, _2, 0)) // pop(staticcall(_1, _1, 0, 0, _1, 0))
// return(0, 0) // return(0, 0)
// } // }
// } // }

View File

@ -30,28 +30,27 @@
// let start := calldataload(0x10) // let start := calldataload(0x10)
// if calldataload(0) // if calldataload(0)
// { // {
// let _4 := 7 // let _3 := 7
// mstore(add(start, 2), _4) // mstore(add(start, 2), _3)
// calldatacopy(start, 0, 0x20) // calldatacopy(start, 0, 0x20)
// } // }
// if calldataload(1) // if calldataload(1)
// { // {
// let _11 := 9 // let _9 := 9
// mstore(add(start, 2), _11) // mstore(add(start, 2), _9)
// let _14 := 0x21 // let _12 := 0x21
// let _15 := 0 // calldatacopy(add(start, 1), 0, _12)
// calldatacopy(add(start, 1), _15, _14)
// } // }
// if calldataload(2) // if calldataload(2)
// { // {
// let _20 := 7 // let _17 := 7
// mstore8(add(start, 2), _20) // mstore8(add(start, 2), _17)
// calldatacopy(start, 0, 3) // calldatacopy(start, 0, 3)
// } // }
// if calldataload(3) // if calldataload(3)
// { // {
// let _27 := 7 // let _23 := 7
// mstore8(add(start, 3), _27) // mstore8(add(start, 3), _23)
// calldatacopy(start, 0, 3) // calldatacopy(start, 0, 3)
// } // }
// sstore(0, keccak256(start, 0x40)) // sstore(0, keccak256(start, 0x40))

View File

@ -33,14 +33,13 @@
// } // }
// if calldataload(1) // if calldataload(1)
// { // {
// let _10 := 9 // let _7 := 9
// let _11 := 2 // let _8 := 2
// calldatacopy(1, 0, 0x21) // calldatacopy(1, 0, 0x21)
// } // }
// if calldataload(2) // if calldataload(2)
// { // {
// let _17 := 7 // mstore8(2, 7)
// let _18 := 2
// calldatacopy(0, 0, 3) // calldatacopy(0, 0, 3)
// } // }
// if calldataload(3) // if calldataload(3)

View File

@ -13,8 +13,8 @@
// { // {
// { // {
// let c := calldataload(0) // let c := calldataload(0)
// let _2 := 1 // let _1 := 1
// if c { let _3 := 2 } // if c { let _2 := 2 }
// sstore(c, 3) // sstore(c, 3)
// } // }
// } // }

View File

@ -16,8 +16,7 @@
// { // {
// mstore(0, 5) // mstore(0, 5)
// if calldataload(0) { leave } // if calldataload(0) { leave }
// let _5 := 5 // mstore(0x20, 5)
// let _6 := 0x20
// revert(0, 0) // revert(0, 0)
// } // }
// } // }

View File

@ -22,6 +22,6 @@
// function f() -> r // function f() -> r
// { // {
// r := mload(0x20) // r := mload(0x20)
// let r_7 := r // let r_6 := r
// } // }
// } // }

View File

@ -13,8 +13,8 @@
// { // {
// { // {
// let c := calldataload(0) // let c := calldataload(0)
// let _2 := 4 // let _1 := 4
// if c { let _3 := 2 } // if c { let _2 := 2 }
// let d := 0 // let d := 0
// revert(d, d) // revert(d, d)
// } // }

View File

@ -8,8 +8,6 @@
// //
// { // {
// { // {
// let _1 := returndatasize() // returndatacopy(0, 0, returndatasize())
// let _2 := 0
// let _3 := 0
// } // }
// } // }

View File

@ -9,8 +9,6 @@
// //
// { // {
// { // {
// let s := returndatasize() // returndatacopy(0, 0, returndatasize())
// let _1 := 0
// let _2 := 0
// } // }
// } // }

View File

@ -13,21 +13,19 @@
// //
// { // {
// { // {
// let a_9 // let a_5
// let a := a_9 // let a := a_5
// switch calldataload(0) // switch calldataload(0)
// case 0 { // case 0 {
// a := calldataload(9) // a := calldataload(9)
// let a_10 := a // let a_6 := a
// } // }
// case 1 { // case 1 {
// let a_12 := a // let a_8 := a
// a := calldataload(10) // a := calldataload(10)
// let a_11 := a // let a_7 := a
// } // }
// let a_13 := a // calldatacopy(0x20, 0, a)
// let _5 := 0
// let _6 := 0x20
// sstore(0, mload(0)) // sstore(0, mload(0))
// } // }
// } // }

View File

@ -13,11 +13,11 @@
// { // {
// let c := calldataload(0) // let c := calldataload(0)
// mstore(c, 4) // mstore(c, 4)
// let _3 := 8 // let _2 := 8
// let _5 := add(c, 0x20) // let _4 := add(c, 0x20)
// sstore(0, mload(c)) // sstore(0, mload(c))
// let _8 := 9 // let _6 := 9
// let _9 := 20 // let _7 := 20
// let _11 := add(c, 0x20) // let _9 := add(c, 0x20)
// } // }
// } // }

View File

@ -15,9 +15,7 @@
// { // {
// { // {
// let _1 := 1 // let _1 := 1
// let _2 := 0 // let _2 := 2
// let _3 := 2
// let _4 := 0
// f() // f()
// } // }
// function f() // function f()