Merge remote-tracking branch 'origin/develop' into breaking

This commit is contained in:
chriseth
2021-11-09 18:26:34 +01:00
409 changed files with 4885 additions and 3597 deletions
@@ -66,7 +66,7 @@ IR:
object "C_6" {
code {
/// @src 0:60:101 "contract C {..."
mstore(64, 128)
mstore(64, memoryguard(128))
if callvalue() { revert_error_ca66f745a3ce8ff40e2ccaf1ad45db7774001b90d25810abd9040049be7bf4bb() }
constructor_C_6()
@@ -97,7 +97,7 @@ object "C_6" {
object "C_6_deployed" {
code {
/// @src 0:60:101 "contract C {..."
mstore(64, 128)
mstore(64, memoryguard(128))
if iszero(lt(calldatasize(), 4))
{
@@ -182,11 +182,12 @@ object "C_6" {
code {
{
/// @src 0:60:101 "contract C {..."
mstore(64, 128)
let _1 := memoryguard(0x80)
mstore(64, _1)
if callvalue() { revert(0, 0) }
let _1 := datasize("C_6_deployed")
codecopy(128, dataoffset("C_6_deployed"), _1)
return(128, _1)
let _2 := datasize("C_6_deployed")
codecopy(_1, dataoffset("C_6_deployed"), _2)
return(_1, _2)
}
}
/// @use-src 0:"debug_info_in_yul_and_evm_asm_print_all/input.sol"
@@ -194,15 +195,16 @@ object "C_6" {
code {
{
/// @src 0:60:101 "contract C {..."
mstore(64, 128)
let _1 := memoryguard(0x80)
mstore(64, _1)
if iszero(lt(calldatasize(), 4))
{
let _1 := 0
if eq(0x26121ff0, shr(224, calldataload(_1)))
let _2 := 0
if eq(0x26121ff0, shr(224, calldataload(_2)))
{
if callvalue() { revert(_1, _1) }
if slt(add(calldatasize(), not(3)), _1) { revert(_1, _1) }
return(128, _1)
if callvalue() { revert(_2, _2) }
if slt(add(calldatasize(), not(3)), _2) { revert(_2, _2) }
return(_1, _2)
}
}
revert(0, 0)
@@ -66,7 +66,7 @@ IR:
object "C_6" {
code {
/// @src 0:60:101
mstore(64, 128)
mstore(64, memoryguard(128))
if callvalue() { revert_error_ca66f745a3ce8ff40e2ccaf1ad45db7774001b90d25810abd9040049be7bf4bb() }
constructor_C_6()
@@ -97,7 +97,7 @@ object "C_6" {
object "C_6_deployed" {
code {
/// @src 0:60:101
mstore(64, 128)
mstore(64, memoryguard(128))
if iszero(lt(calldatasize(), 4))
{
@@ -181,11 +181,12 @@ object "C_6" {
code {
{
/// @src 0:60:101
mstore(64, 128)
let _1 := memoryguard(0x80)
mstore(64, _1)
if callvalue() { revert(0, 0) }
let _1 := datasize("C_6_deployed")
codecopy(128, dataoffset("C_6_deployed"), _1)
return(128, _1)
let _2 := datasize("C_6_deployed")
codecopy(_1, dataoffset("C_6_deployed"), _2)
return(_1, _2)
}
}
/// @use-src 0:"debug_info_in_yul_and_evm_asm_print_location_only/input.sol"
@@ -193,15 +194,16 @@ object "C_6" {
code {
{
/// @src 0:60:101
mstore(64, 128)
let _1 := memoryguard(0x80)
mstore(64, _1)
if iszero(lt(calldatasize(), 4))
{
let _1 := 0
if eq(0x26121ff0, shr(224, calldataload(_1)))
let _2 := 0
if eq(0x26121ff0, shr(224, calldataload(_2)))
{
if callvalue() { revert(_1, _1) }
if slt(add(calldatasize(), not(3)), _1) { revert(_1, _1) }
return(128, _1)
if callvalue() { revert(_2, _2) }
if slt(add(calldatasize(), not(3)), _2) { revert(_2, _2) }
return(_1, _2)
}
}
revert(0, 0)
@@ -63,7 +63,7 @@ IR:
object "C_6" {
code {
mstore(64, 128)
mstore(64, memoryguard(128))
if callvalue() { revert_error_ca66f745a3ce8ff40e2ccaf1ad45db7774001b90d25810abd9040049be7bf4bb() }
constructor_C_6()
@@ -90,7 +90,7 @@ object "C_6" {
object "C_6_deployed" {
code {
mstore(64, 128)
mstore(64, memoryguard(128))
if iszero(lt(calldatasize(), 4))
{
@@ -171,26 +171,28 @@ Optimized IR:
object "C_6" {
code {
{
mstore(64, 128)
let _1 := memoryguard(0x80)
mstore(64, _1)
if callvalue() { revert(0, 0) }
let _1 := datasize("C_6_deployed")
codecopy(128, dataoffset("C_6_deployed"), _1)
return(128, _1)
let _2 := datasize("C_6_deployed")
codecopy(_1, dataoffset("C_6_deployed"), _2)
return(_1, _2)
}
}
/// @use-src 0:"debug_info_in_yul_and_evm_asm_print_none/input.sol"
object "C_6_deployed" {
code {
{
mstore(64, 128)
let _1 := memoryguard(0x80)
mstore(64, _1)
if iszero(lt(calldatasize(), 4))
{
let _1 := 0
if eq(0x26121ff0, shr(224, calldataload(_1)))
let _2 := 0
if eq(0x26121ff0, shr(224, calldataload(_2)))
{
if callvalue() { revert(_1, _1) }
if slt(add(calldatasize(), not(3)), _1) { revert(_1, _1) }
return(128, _1)
if callvalue() { revert(_2, _2) }
if slt(add(calldatasize(), not(3)), _2) { revert(_2, _2) }
return(_1, _2)
}
}
revert(0, 0)
@@ -11,7 +11,7 @@ IR:
object "C_2" {
code {
/// @src 0:265:278 "contract C {}"
mstore(64, 128)
mstore(64, memoryguard(128))
if callvalue() { revert_error_ca66f745a3ce8ff40e2ccaf1ad45db7774001b90d25810abd9040049be7bf4bb() }
constructor_C_2()
@@ -42,7 +42,7 @@ object "C_2" {
object "C_2_deployed" {
code {
/// @src 0:265:278 "contract C {}"
mstore(64, 128)
mstore(64, memoryguard(128))
revert_error_42b3090547df1d2001c96683413b8cf91c1b902ef5e3cb8d9f6f304cf7446f74()
@@ -82,11 +82,12 @@ object "C_2" {
code {
{
/// @src 0:265:278 "contract C {}"
mstore(64, 128)
let _1 := memoryguard(0x80)
mstore(64, _1)
if callvalue() { revert(0, 0) }
let _1 := datasize("C_2_deployed")
codecopy(128, dataoffset("C_2_deployed"), _1)
return(128, _1)
let _2 := datasize("C_2_deployed")
codecopy(_1, dataoffset("C_2_deployed"), _2)
return(_1, _2)
}
}
/// @use-src 0:"debug_info_in_yul_snippet_escaping/input.sol"
@@ -94,7 +95,7 @@ object "C_2" {
code {
{
/// @src 0:265:278 "contract C {}"
mstore(64, 128)
mstore(64, memoryguard(0x80))
revert(0, 0)
}
}
@@ -115,7 +116,7 @@ IR:
object "D_27" {
code {
/// @src 0:279:599 "contract D /** @src 0:96:165 \"contract D {...\" *\/ {..."
mstore(64, 128)
mstore(64, memoryguard(128))
if callvalue() { revert_error_ca66f745a3ce8ff40e2ccaf1ad45db7774001b90d25810abd9040049be7bf4bb() }
constructor_D_27()
@@ -146,7 +147,7 @@ object "D_27" {
object "D_27_deployed" {
code {
/// @src 0:279:599 "contract D /** @src 0:96:165 \"contract D {...\" *\/ {..."
mstore(64, 128)
mstore(64, memoryguard(128))
if iszero(lt(calldatasize(), 4))
{
@@ -372,7 +373,7 @@ object "D_27" {
object "C_2" {
code {
/// @src 0:265:278 "contract C {}"
mstore(64, 128)
mstore(64, memoryguard(128))
if callvalue() { revert_error_ca66f745a3ce8ff40e2ccaf1ad45db7774001b90d25810abd9040049be7bf4bb() }
constructor_C_2()
@@ -403,7 +404,7 @@ object "D_27" {
object "C_2_deployed" {
code {
/// @src 0:265:278 "contract C {}"
mstore(64, 128)
mstore(64, memoryguard(128))
revert_error_42b3090547df1d2001c96683413b8cf91c1b902ef5e3cb8d9f6f304cf7446f74()
@@ -448,11 +449,12 @@ object "D_27" {
code {
{
/// @src 0:279:599 "contract D /** @src 0:96:165 \"contract D {...\" *\/ {..."
mstore(64, 128)
let _1 := memoryguard(0x80)
mstore(64, _1)
if callvalue() { revert(0, 0) }
let _1 := datasize("D_27_deployed")
codecopy(128, dataoffset("D_27_deployed"), _1)
return(128, _1)
let _2 := datasize("D_27_deployed")
codecopy(_1, dataoffset("D_27_deployed"), _2)
return(_1, _2)
}
}
/// @use-src 0:"debug_info_in_yul_snippet_escaping/input.sol"
@@ -460,26 +462,25 @@ object "D_27" {
code {
{
/// @src 0:279:599 "contract D /** @src 0:96:165 \"contract D {...\" *\/ {..."
mstore(64, 128)
let _1 := memoryguard(0x80)
mstore(64, _1)
if iszero(lt(calldatasize(), 4))
{
let _1 := 0
if eq(0x26121ff0, shr(224, calldataload(_1)))
let _2 := 0
if eq(0x26121ff0, shr(224, calldataload(_2)))
{
if callvalue() { revert(_1, _1) }
if slt(add(calldatasize(), not(3)), _1) { revert(_1, _1) }
if callvalue() { revert(_2, _2) }
if slt(add(calldatasize(), not(3)), _2) { revert(_2, _2) }
/// @src 0:446:491 "new /// @src 0:149:156 \"new C()\"..."
let _2 := datasize("C_2")
let _3 := add(/** @src 0:279:599 "contract D /** @src 0:96:165 \"contract D {...\" *\/ {..." */ 128, /** @src 0:446:491 "new /// @src 0:149:156 \"new C()\"..." */ _2)
if or(gt(_3, 0xffffffffffffffff), lt(_3, /** @src 0:279:599 "contract D /** @src 0:96:165 \"contract D {...\" *\/ {..." */ 128))
/// @src 0:446:491 "new /// @src 0:149:156 \"new C()\"..."
{ panic_error_0x41() }
datacopy(/** @src 0:279:599 "contract D /** @src 0:96:165 \"contract D {...\" *\/ {..." */ 128, /** @src 0:446:491 "new /// @src 0:149:156 \"new C()\"..." */ dataoffset("C_2"), _2)
if iszero(create(/** @src 0:279:599 "contract D /** @src 0:96:165 \"contract D {...\" *\/ {..." */ _1, 128, /** @src 0:446:491 "new /// @src 0:149:156 \"new C()\"..." */ _2))
let _3 := datasize("C_2")
let _4 := add(_1, _3)
if or(gt(_4, 0xffffffffffffffff), lt(_4, _1)) { panic_error_0x41() }
datacopy(_1, dataoffset("C_2"), _3)
if iszero(create(/** @src 0:279:599 "contract D /** @src 0:96:165 \"contract D {...\" *\/ {..." */ _2, /** @src 0:446:491 "new /// @src 0:149:156 \"new C()\"..." */ _1, sub(_4, _1)))
{
/// @src 0:279:599 "contract D /** @src 0:96:165 \"contract D {...\" *\/ {..."
let pos := mload(64)
returndatacopy(pos, _1, returndatasize())
returndatacopy(pos, _2, returndatasize())
revert(pos, returndatasize())
}
mstore(add(allocate_memory_array_string(), 32), "/*")
@@ -539,11 +540,12 @@ object "D_27" {
code {
{
/// @src 0:265:278 "contract C {}"
mstore(64, 128)
let _1 := memoryguard(0x80)
mstore(64, _1)
if callvalue() { revert(0, 0) }
let _1 := datasize("C_2_deployed")
codecopy(128, dataoffset("C_2_deployed"), _1)
return(128, _1)
let _2 := datasize("C_2_deployed")
codecopy(_1, dataoffset("C_2_deployed"), _2)
return(_1, _2)
}
}
/// @use-src 0:"debug_info_in_yul_snippet_escaping/input.sol"
@@ -551,7 +553,7 @@ object "D_27" {
code {
{
/// @src 0:265:278 "contract C {}"
mstore(64, 128)
mstore(64, memoryguard(0x80))
revert(0, 0)
}
}
@@ -0,0 +1 @@
--assemble --optimize --yul-dialect evm --machine ewasm --asm
@@ -0,0 +1 @@
Warning: Yul is still experimental. Please use the output with care.
@@ -0,0 +1,4 @@
{
let x := 42
sstore(0, x)
}
@@ -0,0 +1,2 @@
======= evm_to_wasm_output_selection_asm_only/input.yul (Ewasm) =======
@@ -0,0 +1 @@
--assemble --optimize --yul-dialect evm --machine ewasm --ewasm-ir
@@ -0,0 +1 @@
Warning: Yul is still experimental. Please use the output with care.
@@ -0,0 +1,4 @@
{
let x := 42
sstore(0, x)
}
@@ -0,0 +1,34 @@
======= evm_to_wasm_output_selection_ewasm_ir_only/input.yul (Ewasm) =======
==========================
Translated source:
object "object" {
code {
function main()
{
let hi := i64.shl(i64.extend_i32_u(bswap32(i32.wrap_i64(0))), 32)
let y := i64.or(hi, i64.extend_i32_u(bswap32(i32.wrap_i64(i64.shr_u(0, 32)))))
i64.store(0:i32, y)
i64.store(i32.add(0:i32, 8:i32), y)
i64.store(i32.add(0:i32, 16:i32), y)
i64.store(i32.add(0:i32, 24:i32), y)
i64.store(32:i32, y)
i64.store(i32.add(32:i32, 8:i32), y)
i64.store(i32.add(32:i32, 16:i32), y)
let hi_1 := i64.shl(i64.extend_i32_u(bswap32(i32.wrap_i64(42))), 32)
i64.store(i32.add(32:i32, 24:i32), i64.or(hi_1, i64.extend_i32_u(bswap32(i32.wrap_i64(i64.shr_u(42, 32))))))
eth.storageStore(0:i32, 32:i32)
}
function bswap16(x:i32) -> y:i32
{
y := i32.or(i32.and(i32.shl(x, 8:i32), 0xff00:i32), i32.and(i32.shr_u(x, 8:i32), 0xff:i32))
}
function bswap32(x:i32) -> y:i32
{
let hi:i32 := i32.shl(bswap16(x), 16:i32)
y := i32.or(hi, bswap16(i32.shr_u(x, 16:i32)))
}
}
}
@@ -0,0 +1 @@
--assemble --optimize --yul-dialect evm --machine ewasm --ewasm
@@ -0,0 +1 @@
Warning: Yul is still experimental. Please use the output with care.
@@ -0,0 +1,4 @@
{
let x := 42
sstore(0, x)
}
@@ -0,0 +1,54 @@
======= evm_to_wasm_output_selection_ewasm_only/input.yul (Ewasm) =======
Text representation:
(module
(import "ethereum" "storageStore" (func $eth.storageStore (param i32 i32)))
(memory $memory (export "memory") 1)
(export "main" (func $main))
(func $main
(local $hi i64)
(local $y i64)
(local $hi_1 i64)
(block $label_
(local.set $hi (i64.shl (i64.extend_i32_u (call $bswap32 (i32.wrap_i64 (i64.const 0)))) (i64.const 32)))
(local.set $y (i64.or (local.get $hi) (i64.extend_i32_u (call $bswap32 (i32.wrap_i64 (i64.shr_u (i64.const 0) (i64.const 32)))))))
(i64.store (i32.const 0) (local.get $y))
(i64.store (i32.add (i32.const 0) (i32.const 8)) (local.get $y))
(i64.store (i32.add (i32.const 0) (i32.const 16)) (local.get $y))
(i64.store (i32.add (i32.const 0) (i32.const 24)) (local.get $y))
(i64.store (i32.const 32) (local.get $y))
(i64.store (i32.add (i32.const 32) (i32.const 8)) (local.get $y))
(i64.store (i32.add (i32.const 32) (i32.const 16)) (local.get $y))
(local.set $hi_1 (i64.shl (i64.extend_i32_u (call $bswap32 (i32.wrap_i64 (i64.const 42)))) (i64.const 32)))
(i64.store (i32.add (i32.const 32) (i32.const 24)) (i64.or (local.get $hi_1) (i64.extend_i32_u (call $bswap32 (i32.wrap_i64 (i64.shr_u (i64.const 42) (i64.const 32)))))))
(call $eth.storageStore (i32.const 0) (i32.const 32))
)
)
(func $bswap16
(param $x i32)
(result i32)
(local $y i32)
(block $label__1
(local.set $y (i32.or (i32.and (i32.shl (local.get $x) (i32.const 8)) (i32.const 65280)) (i32.and (i32.shr_u (local.get $x) (i32.const 8)) (i32.const 255))))
)
(local.get $y)
)
(func $bswap32
(param $x i32)
(result i32)
(local $y i32)
(local $hi i32)
(block $label__2
(local.set $hi (i32.shl (call $bswap16 (local.get $x)) (i32.const 16)))
(local.set $y (i32.or (local.get $hi) (call $bswap16 (i32.shr_u (local.get $x) (i32.const 16)))))
)
(local.get $y)
)
)
+2 -2
View File
@@ -11,7 +11,7 @@ IR:
object "C_81" {
code {
/// @src 0:82:370 "contract C {..."
mstore(64, 128)
mstore(64, memoryguard(128))
if callvalue() { revert_error_ca66f745a3ce8ff40e2ccaf1ad45db7774001b90d25810abd9040049be7bf4bb() }
constructor_C_81()
@@ -42,7 +42,7 @@ object "C_81" {
object "C_81_deployed" {
code {
/// @src 0:82:370 "contract C {..."
mstore(64, 128)
mstore(64, memoryguard(128))
if iszero(lt(calldatasize(), 4))
{
@@ -13,7 +13,7 @@
},
"calldata_array_index_access_uint256_dyn_calldata":
{
"entryPoint": 168,
"entryPoint": 152,
"parameterSlots": 2,
"returnSlots": 1
}
@@ -11,11 +11,12 @@ object "C_7" {
code {
{
/// @src 0:82:117 "contract C {..."
mstore(64, 128)
let _1 := memoryguard(0x80)
mstore(64, _1)
if callvalue() { revert(0, 0) }
let _1 := datasize("C_7_deployed")
codecopy(128, dataoffset("C_7_deployed"), _1)
return(128, _1)
let _2 := datasize("C_7_deployed")
codecopy(_1, dataoffset("C_7_deployed"), _2)
return(_1, _2)
}
}
/// @use-src 0:"ir_compiler_inheritance_nosubobjects/input.sol"
@@ -23,7 +24,7 @@ object "C_7" {
code {
{
/// @src 0:82:117 "contract C {..."
mstore(64, 128)
mstore(64, memoryguard(0x80))
revert(0, 0)
}
}
@@ -44,11 +45,12 @@ object "D_10" {
code {
{
/// @src 0:118:137 "contract D is C {..."
mstore(64, 128)
let _1 := memoryguard(0x80)
mstore(64, _1)
if callvalue() { revert(0, 0) }
let _1 := datasize("D_10_deployed")
codecopy(128, dataoffset("D_10_deployed"), _1)
return(128, _1)
let _2 := datasize("D_10_deployed")
codecopy(_1, dataoffset("D_10_deployed"), _2)
return(_1, _2)
}
}
/// @use-src 0:"ir_compiler_inheritance_nosubobjects/input.sol"
@@ -56,7 +58,7 @@ object "D_10" {
code {
{
/// @src 0:118:137 "contract D is C {..."
mstore(64, 128)
mstore(64, memoryguard(0x80))
revert(0, 0)
}
}
+32 -29
View File
@@ -11,11 +11,12 @@ object "C_3" {
code {
{
/// @src 0:82:95 "contract C {}"
mstore(64, 128)
let _1 := memoryguard(0x80)
mstore(64, _1)
if callvalue() { revert(0, 0) }
let _1 := datasize("C_3_deployed")
codecopy(128, dataoffset("C_3_deployed"), _1)
return(128, _1)
let _2 := datasize("C_3_deployed")
codecopy(_1, dataoffset("C_3_deployed"), _2)
return(_1, _2)
}
}
/// @use-src 0:"ir_compiler_subobjects/input.sol"
@@ -23,7 +24,7 @@ object "C_3" {
code {
{
/// @src 0:82:95 "contract C {}"
mstore(64, 128)
mstore(64, memoryguard(0x80))
revert(0, 0)
}
}
@@ -44,11 +45,12 @@ object "D_16" {
code {
{
/// @src 0:96:165 "contract D {..."
mstore(64, 128)
let _1 := memoryguard(0x80)
mstore(64, _1)
if callvalue() { revert(0, 0) }
let _1 := datasize("D_16_deployed")
codecopy(128, dataoffset("D_16_deployed"), _1)
return(128, _1)
let _2 := datasize("D_16_deployed")
codecopy(_1, dataoffset("D_16_deployed"), _2)
return(_1, _2)
}
}
/// @use-src 0:"ir_compiler_subobjects/input.sol"
@@ -56,35 +58,35 @@ object "D_16" {
code {
{
/// @src 0:96:165 "contract D {..."
mstore(64, 128)
let _1 := memoryguard(0x80)
mstore(64, _1)
if iszero(lt(calldatasize(), 4))
{
let _1 := 0
if eq(0x26121ff0, shr(224, calldataload(_1)))
let _2 := 0
if eq(0x26121ff0, shr(224, calldataload(_2)))
{
if callvalue() { revert(_1, _1) }
if slt(add(calldatasize(), not(3)), _1) { revert(_1, _1) }
/// @src 0:149:156 "new C()"
let _2 := datasize("C_3")
let _3 := add(/** @src 0:96:165 "contract D {..." */ 128, /** @src 0:149:156 "new C()" */ _2)
if or(gt(_3, 0xffffffffffffffff), lt(_3, /** @src 0:96:165 "contract D {..." */ 128))
if callvalue() { revert(_2, _2) }
if slt(add(calldatasize(), not(3)), _2) { revert(_2, _2) }
/// @src 0:149:156 "new C()"
let _3 := datasize("C_3")
let _4 := add(_1, _3)
if or(gt(_4, 0xffffffffffffffff), lt(_4, _1))
{
/// @src 0:96:165 "contract D {..."
mstore(_1, shl(224, 0x4e487b71))
mstore(_2, shl(224, 0x4e487b71))
mstore(4, 0x41)
revert(_1, 0x24)
revert(_2, 0x24)
}
/// @src 0:149:156 "new C()"
datacopy(/** @src 0:96:165 "contract D {..." */ 128, /** @src 0:149:156 "new C()" */ dataoffset("C_3"), _2)
if iszero(create(/** @src 0:96:165 "contract D {..." */ _1, 128, /** @src 0:149:156 "new C()" */ _2))
datacopy(_1, dataoffset("C_3"), _3)
if iszero(create(/** @src 0:96:165 "contract D {..." */ _2, /** @src 0:149:156 "new C()" */ _1, sub(_4, _1)))
{
/// @src 0:96:165 "contract D {..."
let pos := mload(64)
returndatacopy(pos, _1, returndatasize())
returndatacopy(pos, _2, returndatasize())
revert(pos, returndatasize())
}
return(mload(64), _1)
return(mload(64), _2)
}
}
revert(0, 0)
@@ -95,11 +97,12 @@ object "D_16" {
code {
{
/// @src 0:82:95 "contract C {}"
mstore(64, 128)
let _1 := memoryguard(0x80)
mstore(64, _1)
if callvalue() { revert(0, 0) }
let _1 := datasize("C_3_deployed")
codecopy(128, dataoffset("C_3_deployed"), _1)
return(128, _1)
let _2 := datasize("C_3_deployed")
codecopy(_1, dataoffset("C_3_deployed"), _2)
return(_1, _2)
}
}
/// @use-src 0:"ir_compiler_subobjects/input.sol"
@@ -107,7 +110,7 @@ object "D_16" {
code {
{
/// @src 0:82:95 "contract C {}"
mstore(64, 128)
mstore(64, memoryguard(0x80))
revert(0, 0)
}
}
@@ -23,15 +23,16 @@ object "D_12" {
code {
{
/// @src 0:82:161 "contract D {..."
mstore(64, 128)
let _1 := memoryguard(0x80)
mstore(64, _1)
if iszero(lt(calldatasize(), 4))
{
let _1 := 0
if eq(0x26121ff0, shr(224, calldataload(_1)))
let _2 := 0
if eq(0x26121ff0, shr(224, calldataload(_2)))
{
if callvalue() { revert(_1, _1) }
if slt(add(calldatasize(), not(3)), _1) { revert(_1, _1) }
return(128, _1)
if callvalue() { revert(_2, _2) }
if slt(add(calldatasize(), not(3)), _2) { revert(_2, _2) }
return(_1, _2)
}
}
revert(0, 0)
@@ -11,11 +11,12 @@ object "D_8" {
code {
{
/// @src 0:82:153 "contract D {..."
mstore(64, 128)
let _1 := memoryguard(0x80)
mstore(64, _1)
if callvalue() { revert(0, 0) }
let _1 := datasize("D_8_deployed")
codecopy(128, dataoffset("D_8_deployed"), _1)
return(128, _1)
let _2 := datasize("D_8_deployed")
codecopy(_1, dataoffset("D_8_deployed"), _2)
return(_1, _2)
}
}
/// @use-src 0:"ir_with_assembly_no_memoryguard_runtime/input.sol"
@@ -11,11 +11,12 @@ object "C_7" {
code {
{
/// @src 0:62:285 "contract C {..."
mstore(64, 128)
let _1 := memoryguard(0x80)
mstore(64, _1)
if callvalue() { revert(0, 0) }
let _1 := datasize("C_7_deployed")
codecopy(128, dataoffset("C_7_deployed"), _1)
return(128, _1)
let _2 := datasize("C_7_deployed")
codecopy(_1, dataoffset("C_7_deployed"), _2)
return(_1, _2)
}
}
/// @use-src 0:"keccak_optimization_low_runs/input.sol"
@@ -7,7 +7,6 @@ Warning: Return value of low-level calls not used.
Info: Contract invariant(s) for model_checker_invariants_all/input.sol:test:
(x <= 0)
Reentrancy property(ies) for model_checker_invariants_all/input.sol:test:
(!(x <= 0) || (x' <= 0))
((!(x <= 0) || !(<errorCode> >= 3)) && (!(x <= 0) || (x' <= 0)))
((!(x <= 0) || (x' <= 0)) && (!(x <= 0) || (<errorCode> <= 0)))
<errorCode> = 0 -> no errors
@@ -7,7 +7,6 @@ Warning: Return value of low-level calls not used.
Info: Contract invariant(s) for model_checker_invariants_contract_reentrancy/input.sol:test:
(x <= 0)
Reentrancy property(ies) for model_checker_invariants_contract_reentrancy/input.sol:test:
(!(x <= 0) || (x' <= 0))
((!(x <= 0) || !(<errorCode> >= 3)) && (!(x <= 0) || (x' <= 0)))
((!(x <= 0) || (x' <= 0)) && (!(x <= 0) || (<errorCode> <= 0)))
<errorCode> = 0 -> no errors
+6 -5
View File
@@ -11,11 +11,12 @@ object "C_59" {
code {
{
/// @src 0:346:625 "contract C {..."
mstore(64, 128)
let _1 := memoryguard(0x80)
mstore(64, _1)
if callvalue() { revert(0, 0) }
let _1 := datasize("C_59_deployed")
codecopy(128, dataoffset("C_59_deployed"), _1)
return(128, _1)
let _2 := datasize("C_59_deployed")
codecopy(_1, dataoffset("C_59_deployed"), _2)
return(_1, _2)
}
}
/// @use-src 0:"name_simplifier/input.sol"
@@ -23,7 +24,7 @@ object "C_59" {
code {
{
/// @src 0:346:625 "contract C {..."
mstore(64, 128)
mstore(64, memoryguard(0x80))
if iszero(lt(calldatasize(), 4))
{
let _1 := 0
+2 -4
View File
@@ -23,7 +23,7 @@ object "MyContract" {
Binary representation:
33600055600b806011600039806000f3fe60005460005260206000f3
33600055600b8060106000396000f3fe60005460005260206000f3
Text representation:
/* "object_compiler/input.yul":128:136 */
@@ -34,15 +34,13 @@ Text representation:
sstore
/* "object_compiler/input.yul":240:259 */
dataSize(sub_0)
dup1
/* "object_compiler/input.yul":217:238 */
dup1
dataOffset(sub_0)
/* "object_compiler/input.yul":125:126 */
0x00
/* "object_compiler/input.yul":205:260 */
codecopy
/* "object_compiler/input.yul":275:294 */
dup1
/* "object_compiler/input.yul":125:126 */
0x00
/* "object_compiler/input.yul":265:295 */
@@ -11,11 +11,12 @@ object "Arraysum_34" {
code {
{
/// @src 0:80:429 "contract Arraysum {..."
mstore(64, 128)
let _1 := memoryguard(0x80)
mstore(64, _1)
if callvalue() { revert(0, 0) }
let _1 := datasize("Arraysum_34_deployed")
codecopy(128, dataoffset("Arraysum_34_deployed"), _1)
return(128, _1)
let _2 := datasize("Arraysum_34_deployed")
codecopy(_1, dataoffset("Arraysum_34_deployed"), _2)
return(_1, _2)
}
}
/// @use-src 0:"optimizer_array_sload/input.sol"
@@ -23,7 +24,7 @@ object "Arraysum_34" {
code {
{
/// @src 0:80:429 "contract Arraysum {..."
mstore(64, 128)
mstore(64, memoryguard(0x80))
if iszero(lt(calldatasize(), 4))
{
let _1 := 0
@@ -0,0 +1 @@
--optimize --ewasm-ir
@@ -0,0 +1 @@
The following outputs are not supported in compiler mode: --ewasm-ir.
@@ -0,0 +1 @@
1
@@ -0,0 +1,4 @@
// SPDX-License-Identifier: GPL-2.0
pragma solidity *;
contract C {}
+2 -2
View File
@@ -11,7 +11,7 @@ IR:
object "C_15" {
code {
/// @src 0:59:147 "contract C {..."
mstore(64, 128)
mstore(64, memoryguard(128))
if callvalue() { revert_error_ca66f745a3ce8ff40e2ccaf1ad45db7774001b90d25810abd9040049be7bf4bb() }
constructor_C_15()
@@ -57,7 +57,7 @@ object "C_15" {
object "C_15_deployed" {
code {
/// @src 0:59:147 "contract C {..."
mstore(64, 128)
mstore(64, memoryguard(128))
if iszero(lt(calldatasize(), 4))
{
@@ -1 +1 @@
--ast-compact-json --asm --asm-json --opcodes --bin --bin-runtime --abi --ir --ir-optimized --ewasm --hashes --userdoc --devdoc --metadata --storage-layout
--ast-compact-json --asm --asm-json --opcodes --bin --bin-runtime --abi --ir --ir-optimized --ewasm --ewasm-ir --hashes --userdoc --devdoc --metadata --storage-layout
@@ -1 +1 @@
The following outputs are not supported in standard JSON mode: --abi, --asm, --asm-json, --ast-compact-json, --bin, --bin-runtime, --devdoc, --ewasm, --hashes, --ir, --ir-optimized, --metadata, --opcodes, --storage-layout, --userdoc.
The following outputs are not supported in standard JSON mode: --abi, --asm, --asm-json, --ast-compact-json, --bin, --bin-runtime, --devdoc, --ewasm, --ewasm-ir, --hashes, --ir, --ir-optimized, --metadata, --opcodes, --storage-layout, --userdoc.
File diff suppressed because it is too large Load Diff
@@ -72,7 +72,7 @@ sub_0: assembly {
object \"C_6\" {
code {
/// @src 0:60:101 \"contract C {...\"
mstore(64, 128)
mstore(64, memoryguard(128))
if callvalue() { revert_error_ca66f745a3ce8ff40e2ccaf1ad45db7774001b90d25810abd9040049be7bf4bb() }
constructor_C_6()
@@ -103,7 +103,7 @@ object \"C_6\" {
object \"C_6_deployed\" {
code {
/// @src 0:60:101 \"contract C {...\"
mstore(64, 128)
mstore(64, memoryguard(128))
if iszero(lt(calldatasize(), 4))
{
@@ -187,11 +187,12 @@ object \"C_6\" {
code {
{
/// @src 0:60:101 \"contract C {...\"
mstore(64, 128)
let _1 := memoryguard(0x80)
mstore(64, _1)
if callvalue() { revert(0, 0) }
let _1 := datasize(\"C_6_deployed\")
codecopy(128, dataoffset(\"C_6_deployed\"), _1)
return(128, _1)
let _2 := datasize(\"C_6_deployed\")
codecopy(_1, dataoffset(\"C_6_deployed\"), _2)
return(_1, _2)
}
}
/// @use-src 0:\"C\"
@@ -199,15 +200,16 @@ object \"C_6\" {
code {
{
/// @src 0:60:101 \"contract C {...\"
mstore(64, 128)
let _1 := memoryguard(0x80)
mstore(64, _1)
if iszero(lt(calldatasize(), 4))
{
let _1 := 0
if eq(0x26121ff0, shr(224, calldataload(_1)))
let _2 := 0
if eq(0x26121ff0, shr(224, calldataload(_2)))
{
if callvalue() { revert(_1, _1) }
if slt(add(calldatasize(), not(3)), _1) { revert(_1, _1) }
return(128, _1)
if callvalue() { revert(_2, _2) }
if slt(add(calldatasize(), not(3)), _2) { revert(_2, _2) }
return(_1, _2)
}
}
revert(0, 0)
@@ -72,7 +72,7 @@ sub_0: assembly {
object \"C_6\" {
code {
/// @src 0:60:101
mstore(64, 128)
mstore(64, memoryguard(128))
if callvalue() { revert_error_ca66f745a3ce8ff40e2ccaf1ad45db7774001b90d25810abd9040049be7bf4bb() }
constructor_C_6()
@@ -103,7 +103,7 @@ object \"C_6\" {
object \"C_6_deployed\" {
code {
/// @src 0:60:101
mstore(64, 128)
mstore(64, memoryguard(128))
if iszero(lt(calldatasize(), 4))
{
@@ -186,11 +186,12 @@ object \"C_6\" {
code {
{
/// @src 0:60:101
mstore(64, 128)
let _1 := memoryguard(0x80)
mstore(64, _1)
if callvalue() { revert(0, 0) }
let _1 := datasize(\"C_6_deployed\")
codecopy(128, dataoffset(\"C_6_deployed\"), _1)
return(128, _1)
let _2 := datasize(\"C_6_deployed\")
codecopy(_1, dataoffset(\"C_6_deployed\"), _2)
return(_1, _2)
}
}
/// @use-src 0:\"C\"
@@ -198,15 +199,16 @@ object \"C_6\" {
code {
{
/// @src 0:60:101
mstore(64, 128)
let _1 := memoryguard(0x80)
mstore(64, _1)
if iszero(lt(calldatasize(), 4))
{
let _1 := 0
if eq(0x26121ff0, shr(224, calldataload(_1)))
let _2 := 0
if eq(0x26121ff0, shr(224, calldataload(_2)))
{
if callvalue() { revert(_1, _1) }
if slt(add(calldatasize(), not(3)), _1) { revert(_1, _1) }
return(128, _1)
if callvalue() { revert(_2, _2) }
if slt(add(calldatasize(), not(3)), _2) { revert(_2, _2) }
return(_1, _2)
}
}
revert(0, 0)
@@ -69,7 +69,7 @@ sub_0: assembly {
object \"C_6\" {
code {
mstore(64, 128)
mstore(64, memoryguard(128))
if callvalue() { revert_error_ca66f745a3ce8ff40e2ccaf1ad45db7774001b90d25810abd9040049be7bf4bb() }
constructor_C_6()
@@ -96,7 +96,7 @@ object \"C_6\" {
object \"C_6_deployed\" {
code {
mstore(64, 128)
mstore(64, memoryguard(128))
if iszero(lt(calldatasize(), 4))
{
@@ -176,26 +176,28 @@ object \"C_6\" {
object \"C_6\" {
code {
{
mstore(64, 128)
let _1 := memoryguard(0x80)
mstore(64, _1)
if callvalue() { revert(0, 0) }
let _1 := datasize(\"C_6_deployed\")
codecopy(128, dataoffset(\"C_6_deployed\"), _1)
return(128, _1)
let _2 := datasize(\"C_6_deployed\")
codecopy(_1, dataoffset(\"C_6_deployed\"), _2)
return(_1, _2)
}
}
/// @use-src 0:\"C\"
object \"C_6_deployed\" {
code {
{
mstore(64, 128)
let _1 := memoryguard(0x80)
mstore(64, _1)
if iszero(lt(calldatasize(), 4))
{
let _1 := 0
if eq(0x26121ff0, shr(224, calldataload(_1)))
let _2 := 0
if eq(0x26121ff0, shr(224, calldataload(_2)))
{
if callvalue() { revert(_1, _1) }
if slt(add(calldatasize(), not(3)), _1) { revert(_1, _1) }
return(128, _1)
if callvalue() { revert(_2, _2) }
if slt(add(calldatasize(), not(3)), _2) { revert(_2, _2) }
return(_1, _2)
}
}
revert(0, 0)
@@ -10,7 +10,7 @@
object \"C_54\" {
code {
/// @src 0:79:435 \"contract C...\"
mstore(64, 160)
mstore(64, memoryguard(160))
if callvalue() { revert_error_ca66f745a3ce8ff40e2ccaf1ad45db7774001b90d25810abd9040049be7bf4bb() }
let _1 := copy_arguments_for_constructor_20_object_C_54()
@@ -161,7 +161,7 @@ object \"C_54\" {
object \"C_54_deployed\" {
code {
/// @src 0:79:435 \"contract C...\"
mstore(64, 128)
mstore(64, memoryguard(128))
if iszero(lt(calldatasize(), 4))
{
@@ -526,7 +526,6 @@ object \"C_54\" {
let expr_46_address := convert_t_contract$_C_$54_to_t_address(expr_45_address)
let expr_46_functionSelector := 0x26121ff0
/// @src 0:410:418 \"this.f()\"
if iszero(extcodesize(expr_46_address)) { revert_error_0cc013b6b3b6beabea4e3a74a6d380f0df81852ca99887912475e1f66b2a2c20() }
// storage for arguments and returned data
let _10 := allocate_unbounded()
@@ -592,30 +591,31 @@ object \"C_54\" {
code {
{
/// @src 0:79:435 \"contract C...\"
mstore(64, 160)
let _1 := memoryguard(0xa0)
mstore(64, _1)
if callvalue() { revert(0, 0) }
let programSize := datasize(\"C_54\")
let argSize := sub(codesize(), programSize)
let newFreePtr := add(160, and(add(argSize, 31), not(31)))
if or(gt(newFreePtr, sub(shl(64, 1), 1)), lt(newFreePtr, 160))
let newFreePtr := add(_1, and(add(argSize, 31), not(31)))
if or(gt(newFreePtr, sub(shl(64, 1), 1)), lt(newFreePtr, _1))
{
mstore(/** @src -1:-1:-1 */ 0, /** @src 0:79:435 \"contract C...\" */ shl(224, 0x4e487b71))
mstore(4, 0x41)
revert(/** @src -1:-1:-1 */ 0, /** @src 0:79:435 \"contract C...\" */ 0x24)
}
mstore(64, newFreePtr)
codecopy(160, programSize, argSize)
if slt(argSize, 32)
codecopy(_1, programSize, argSize)
if slt(sub(add(_1, argSize), _1), 32)
{
revert(/** @src -1:-1:-1 */ 0, 0)
}
/// @src 0:79:435 \"contract C...\"
constructor_C(mload(160))
let _1 := mload(64)
let _2 := datasize(\"C_54_deployed\")
codecopy(_1, dataoffset(\"C_54_deployed\"), _2)
setimmutable(_1, \"8\", mload(128))
return(_1, _2)
constructor_C(mload(_1))
let _2 := mload(64)
let _3 := datasize(\"C_54_deployed\")
codecopy(_2, dataoffset(\"C_54_deployed\"), _3)
setimmutable(_2, \"8\", mload(128))
return(_2, _3)
}
/// @ast-id 20 @src 0:182:230 \"constructor(int _init)...\"
function constructor_C(var_init)
@@ -631,7 +631,7 @@ object \"C_54\" {
code {
{
/// @src 0:79:435 \"contract C...\"
mstore(64, 128)
mstore(64, memoryguard(0x80))
if iszero(lt(calldatasize(), 4))
{
let _1 := 0
@@ -639,7 +639,7 @@ object \"C_54\" {
case 0x26121ff0 {
if callvalue() { revert(_1, _1) }
abi_decode(calldatasize())
let ret := /** @src 0:286:305 \"constVar + immutVar\" */ checked_add_int256_566(/** @src 0:297:305 \"immutVar\" */ loadimmutable(\"8\"))
let ret := /** @src 0:286:305 \"constVar + immutVar\" */ checked_add_int256_556(/** @src 0:297:305 \"immutVar\" */ loadimmutable(\"8\"))
/// @src 0:79:435 \"contract C...\"
let memPos := mload(64)
return(memPos, sub(abi_encode_int256(memPos, ret), memPos))
@@ -663,7 +663,7 @@ object \"C_54\" {
if callvalue() { revert(_1, _1) }
abi_decode(calldatasize())
let memPos_3 := mload(64)
return(memPos_3, sub(abi_encode_int256_565(memPos_3), memPos_3))
return(memPos_3, sub(abi_encode_int256_555(memPos_3), memPos_3))
}
}
revert(0, 0)
@@ -672,7 +672,7 @@ object \"C_54\" {
{
if slt(add(dataEnd, not(3)), 0) { revert(0, 0) }
}
function abi_encode_int256_565(headStart) -> tail
function abi_encode_int256_555(headStart) -> tail
{
tail := add(headStart, 32)
mstore(headStart, /** @src 0:124:126 \"41\" */ 0x29)
@@ -689,7 +689,7 @@ object \"C_54\" {
mstore(4, 0x11)
revert(0, 0x24)
}
function checked_add_int256_566(y) -> sum
function checked_add_int256_556(y) -> sum
{
if and(1, sgt(y, sub(shl(255, 1), 42))) { panic_error_0x11() }
sum := add(/** @src 0:124:126 \"41\" */ 0x29, /** @src 0:79:435 \"contract C...\" */ y)
@@ -711,13 +711,6 @@ object \"C_54\" {
let ret := add(_3, 1)
sstore(_2, ret)
/// @src 0:410:418 \"this.f()\"
if iszero(extcodesize(/** @src 0:410:414 \"this\" */ address()))
/// @src 0:410:418 \"this.f()\"
{
/// @src 0:79:435 \"contract C...\"
revert(_2, _2)
}
/// @src 0:410:418 \"this.f()\"
let _4 := /** @src 0:79:435 \"contract C...\" */ mload(64)
/// @src 0:410:418 \"this.f()\"
mstore(_4, /** @src 0:79:435 \"contract C...\" */ shl(228, 0x026121ff))
@@ -774,7 +767,7 @@ object \"C_54\" {
object \"D_72\" {
code {
/// @src 1:91:166 \"contract D is C(3)...\"
mstore(64, 160)
mstore(64, memoryguard(160))
if callvalue() { revert_error_ca66f745a3ce8ff40e2ccaf1ad45db7774001b90d25810abd9040049be7bf4bb() }
let _1 := copy_arguments_for_constructor_71_object_D_72()
@@ -993,7 +986,7 @@ object \"D_72\" {
object \"D_72_deployed\" {
code {
/// @src 1:91:166 \"contract D is C(3)...\"
mstore(64, 128)
mstore(64, memoryguard(128))
if iszero(lt(calldatasize(), 4))
{
@@ -1358,7 +1351,6 @@ object \"D_72\" {
let expr_46_address := convert_t_contract$_C_$54_to_t_address(expr_45_address)
let expr_46_functionSelector := 0x26121ff0
/// @src 0:410:418 \"this.f()\"
if iszero(extcodesize(expr_46_address)) { revert_error_0cc013b6b3b6beabea4e3a74a6d380f0df81852ca99887912475e1f66b2a2c20() }
// storage for arguments and returned data
let _10 := allocate_unbounded()
@@ -1424,30 +1416,31 @@ object \"D_72\" {
code {
{
/// @src 1:91:166 \"contract D is C(3)...\"
mstore(64, 160)
let _1 := memoryguard(0xa0)
mstore(64, _1)
if callvalue() { revert(0, 0) }
let programSize := datasize(\"D_72\")
let argSize := sub(codesize(), programSize)
let newFreePtr := add(160, and(add(argSize, 31), not(31)))
if or(gt(newFreePtr, sub(shl(64, 1), 1)), lt(newFreePtr, 160))
let newFreePtr := add(_1, and(add(argSize, 31), not(31)))
if or(gt(newFreePtr, sub(shl(64, 1), 1)), lt(newFreePtr, _1))
{
mstore(/** @src -1:-1:-1 */ 0, /** @src 1:91:166 \"contract D is C(3)...\" */ shl(224, 0x4e487b71))
mstore(4, 0x41)
revert(/** @src -1:-1:-1 */ 0, /** @src 1:91:166 \"contract D is C(3)...\" */ 0x24)
}
mstore(64, newFreePtr)
codecopy(160, programSize, argSize)
if slt(argSize, 32)
codecopy(_1, programSize, argSize)
if slt(sub(add(_1, argSize), _1), 32)
{
revert(/** @src -1:-1:-1 */ 0, 0)
}
/// @src 1:91:166 \"contract D is C(3)...\"
constructor_D(mload(160))
let _1 := mload(64)
let _2 := datasize(\"D_72_deployed\")
codecopy(_1, dataoffset(\"D_72_deployed\"), _2)
setimmutable(_1, \"8\", mload(128))
return(_1, _2)
constructor_D(mload(_1))
let _2 := mload(64)
let _3 := datasize(\"D_72_deployed\")
codecopy(_2, dataoffset(\"D_72_deployed\"), _3)
setimmutable(_2, \"8\", mload(128))
return(_2, _3)
}
/// @ast-id 71 @src 1:113:164 \"constructor(int _init2)...\"
function constructor_D(var_init2)
@@ -1471,7 +1464,7 @@ object \"D_72\" {
code {
{
/// @src 1:91:166 \"contract D is C(3)...\"
mstore(64, 128)
mstore(64, memoryguard(0x80))
if iszero(lt(calldatasize(), 4))
{
let _1 := 0
@@ -1479,7 +1472,7 @@ object \"D_72\" {
case 0x26121ff0 {
if callvalue() { revert(_1, _1) }
abi_decode(calldatasize())
let ret := /** @src 0:286:305 \"constVar + immutVar\" */ checked_add_int256_566(/** @src 0:297:305 \"immutVar\" */ loadimmutable(\"8\"))
let ret := /** @src 0:286:305 \"constVar + immutVar\" */ checked_add_int256_556(/** @src 0:297:305 \"immutVar\" */ loadimmutable(\"8\"))
/// @src 1:91:166 \"contract D is C(3)...\"
let memPos := mload(64)
return(memPos, sub(abi_encode_int256(memPos, ret), memPos))
@@ -1503,7 +1496,7 @@ object \"D_72\" {
if callvalue() { revert(_1, _1) }
abi_decode(calldatasize())
let memPos_3 := mload(64)
return(memPos_3, sub(abi_encode_int256_565(memPos_3), memPos_3))
return(memPos_3, sub(abi_encode_int256_555(memPos_3), memPos_3))
}
}
revert(0, 0)
@@ -1512,7 +1505,7 @@ object \"D_72\" {
{
if slt(add(dataEnd, not(3)), 0) { revert(0, 0) }
}
function abi_encode_int256_565(headStart) -> tail
function abi_encode_int256_555(headStart) -> tail
{
tail := add(headStart, 32)
mstore(headStart, /** @src 0:124:126 \"41\" */ 0x29)
@@ -1529,7 +1522,7 @@ object \"D_72\" {
mstore(4, 0x11)
revert(0, 0x24)
}
function checked_add_int256_566(y) -> sum
function checked_add_int256_556(y) -> sum
{
if and(1, sgt(y, sub(shl(255, 1), 42))) { panic_error_0x11() }
sum := add(/** @src 0:124:126 \"41\" */ 0x29, /** @src 1:91:166 \"contract D is C(3)...\" */ y)
@@ -1551,13 +1544,6 @@ object \"D_72\" {
let ret := add(_3, 1)
sstore(_2, ret)
/// @src 0:410:418 \"this.f()\"
if iszero(extcodesize(/** @src 0:410:414 \"this\" */ address()))
/// @src 0:410:418 \"this.f()\"
{
/// @src 1:91:166 \"contract D is C(3)...\"
revert(_2, _2)
}
/// @src 0:410:418 \"this.f()\"
let _4 := /** @src 1:91:166 \"contract D is C(3)...\" */ mload(64)
/// @src 0:410:418 \"this.f()\"
mstore(_4, /** @src 1:91:166 \"contract D is C(3)...\" */ shl(228, 0x026121ff))
@@ -17,7 +17,7 @@
(local $z3 i64)
(local $_1 i64)
(block $label_
(local.set $p (call $u256_to_i32_726))
(local.set $p (call $u256_to_i32_716))
(local.set $r (i32.add (local.get $p) (i32.const 64)))
(if (i32.lt_u (local.get $r) (local.get $p)) (then
(unreachable)))
@@ -30,14 +30,14 @@
(call $eth.getCallValue (i32.const 0))
(local.set $z3 (i64.load (i32.const 8)))
(if (i32.eqz (i64.eqz (i64.or (i64.or (i64.const 0) (i64.const 0)) (i64.or (local.get $z3) (i64.load (i32.const 0)))))) (then
(call $eth.revert (call $to_internal_i32ptr) (call $u256_to_i32_344))))
(call $eth.revert (call $to_internal_i32ptr_334) (call $u256_to_i32_333))))
(local.set $_1 (datasize \"C_3_deployed\"))
(call $eth.codeCopy (call $to_internal_i32ptr_348) (call $u256_to_i32 (dataoffset \"C_3_deployed\")) (call $u256_to_i32 (local.get $_1)))
(call $eth.finish (call $to_internal_i32ptr_348) (call $u256_to_i32 (local.get $_1)))
(call $eth.codeCopy (call $to_internal_i32ptr) (call $u256_to_i32 (dataoffset \"C_3_deployed\")) (call $u256_to_i32 (local.get $_1)))
(call $eth.finish (call $to_internal_i32ptr) (call $u256_to_i32 (local.get $_1)))
)
)
(func $u256_to_i32_344
(func $u256_to_i32_333
(result i32)
(local $v i32)
(local $_1 i64)
@@ -68,7 +68,7 @@
(local.get $v)
)
(func $u256_to_i32_726
(func $u256_to_i32_716
(result i32)
(local $v i32)
(block $label__3
@@ -82,12 +82,12 @@
(local.get $v)
)
(func $to_internal_i32ptr
(func $to_internal_i32ptr_334
(result i32)
(local $r i32)
(local $p i32)
(block $label__4
(local.set $p (call $u256_to_i32_344))
(local.set $p (call $u256_to_i32_333))
(local.set $r (i32.add (local.get $p) (i32.const 64)))
(if (i32.lt_u (local.get $r) (local.get $p)) (then
(unreachable)))
@@ -96,7 +96,7 @@
(local.get $r)
)
(func $to_internal_i32ptr_348
(func $to_internal_i32ptr
(result i32)
(local $r i32)
(local $v i32)
@@ -9,7 +9,7 @@
object \"C_7\" {
code {
/// @src 0:79:121 \"contract C { function f() public pure {} }\"
mstore(64, 128)
mstore(64, memoryguard(128))
if callvalue()
{
revert_error_ca66f745a3ce8ff40e2ccaf1ad45db7774001b90d25810abd9040049be7bf4bb()
@@ -29,7 +29,7 @@ object \"C_7\" {
object \"C_7_deployed\" {
code {
/// @src 0:79:121 \"contract C { function f() public pure {} }\"
mstore(64, 128)
mstore(64, memoryguard(128))
if iszero(lt(calldatasize(), 4))
{
let selector := shift_right_224_unsigned(calldataload(0))
@@ -10,7 +10,7 @@
object \"C_7\" {
code {
/// @src 0:79:121 \"contract C { function f() public pure {} }\"
mstore(64, 128)
mstore(64, memoryguard(128))
if callvalue() { revert_error_ca66f745a3ce8ff40e2ccaf1ad45db7774001b90d25810abd9040049be7bf4bb() }
constructor_C_7()
@@ -41,7 +41,7 @@ object \"C_7\" {
object \"C_7_deployed\" {
code {
/// @src 0:79:121 \"contract C { function f() public pure {} }\"
mstore(64, 128)
mstore(64, memoryguard(128))
if iszero(lt(calldatasize(), 4))
{
@@ -7,7 +7,6 @@
","message":"Return value of low-level calls not used.","severity":"warning","sourceLocation":{"end":143,"file":"A","start":132},"type":"Warning"},{"component":"general","errorCode":"1180","formattedMessage":"Info: Contract invariant(s) for A:test:
(x <= 0)
Reentrancy property(ies) for A:test:
(!(x <= 0) || (x' <= 0))
((!(x <= 0) || !(<errorCode> >= 3)) && (!(x <= 0) || (x' <= 0)))
((!(x <= 0) || (x' <= 0)) && (!(x <= 0) || (<errorCode> <= 0)))
<errorCode> = 0 -> no errors
@@ -18,7 +17,6 @@ Reentrancy property(ies) for A:test:
","message":"Contract invariant(s) for A:test:
(x <= 0)
Reentrancy property(ies) for A:test:
(!(x <= 0) || (x' <= 0))
((!(x <= 0) || !(<errorCode> >= 3)) && (!(x <= 0) || (x' <= 0)))
((!(x <= 0) || (x' <= 0)) && (!(x <= 0) || (<errorCode> <= 0)))
<errorCode> = 0 -> no errors
@@ -0,0 +1 @@
--pretty-json --json-indent 4
@@ -0,0 +1,12 @@
{
"language": "Solidity",
"sources": {
"/project/../C.sol": {"content": "//SPDX-License-Identifier: GPL-2.0\npragma solidity >=0.0;\nimport \"../L.sol\";"},
"/lib/L.sol": {"content": "//SPDX-License-Identifier: GPL-2.0\npragma solidity >=0.0;\n"}
},
"settings": {
"stopAfter": "parsing",
"remappings": [":/project/=/lib/"],
"outputSelection": {"*": {"": ["ast"]}}
}
}
@@ -0,0 +1,67 @@
{
"sources":
{
"/lib/L.sol":
{
"ast":
{
"absolutePath": "/lib/L.sol",
"id": 2,
"license": "GPL-2.0",
"nodeType": "SourceUnit",
"nodes":
[
{
"id": 1,
"literals":
[
"solidity",
">=",
"0.0"
],
"nodeType": "PragmaDirective",
"src": "35:22:0"
}
],
"src": "35:23:0"
},
"id": 0
},
"/project/../C.sol":
{
"ast":
{
"absolutePath": "/project/../C.sol",
"id": 5,
"license": "GPL-2.0",
"nodeType": "SourceUnit",
"nodes":
[
{
"id": 3,
"literals":
[
"solidity",
">=",
"0.0"
],
"nodeType": "PragmaDirective",
"src": "35:22:1"
},
{
"absolutePath": "/lib/L.sol",
"file": "../L.sol",
"id": 4,
"nameLocation": "-1:-1:-1",
"nodeType": "ImportDirective",
"src": "58:18:1",
"symbolAliases": [],
"unitAlias": ""
}
],
"src": "35:41:1"
},
"id": 1
}
}
}
@@ -10,7 +10,7 @@
object \"C_3\" {
code {
/// @src 0:79:92 \"contract C {}\"
mstore(64, 128)
mstore(64, memoryguard(128))
if callvalue() { revert_error_ca66f745a3ce8ff40e2ccaf1ad45db7774001b90d25810abd9040049be7bf4bb() }
constructor_C_3()
@@ -41,7 +41,7 @@ object \"C_3\" {
object \"C_3_deployed\" {
code {
/// @src 0:79:92 \"contract C {}\"
mstore(64, 128)
mstore(64, memoryguard(128))
revert_error_42b3090547df1d2001c96683413b8cf91c1b902ef5e3cb8d9f6f304cf7446f74()
@@ -79,7 +79,7 @@ object \"C_3\" {
object \"D_16\" {
code {
/// @src 0:93:146 \"contract D { function f() public { C c = new C(); } }\"
mstore(64, 128)
mstore(64, memoryguard(128))
if callvalue() { revert_error_ca66f745a3ce8ff40e2ccaf1ad45db7774001b90d25810abd9040049be7bf4bb() }
constructor_D_16()
@@ -110,7 +110,7 @@ object \"D_16\" {
object \"D_16_deployed\" {
code {
/// @src 0:93:146 \"contract D { function f() public { C c = new C(); } }\"
mstore(64, 128)
mstore(64, memoryguard(128))
if iszero(lt(calldatasize(), 4))
{
@@ -212,7 +212,7 @@ object \"D_16\" {
object \"C_3\" {
code {
/// @src 0:79:92 \"contract C {}\"
mstore(64, 128)
mstore(64, memoryguard(128))
if callvalue() { revert_error_ca66f745a3ce8ff40e2ccaf1ad45db7774001b90d25810abd9040049be7bf4bb() }
constructor_C_3()
@@ -243,7 +243,7 @@ object \"D_16\" {
object \"C_3_deployed\" {
code {
/// @src 0:79:92 \"contract C {}\"
mstore(64, 128)
mstore(64, memoryguard(128))
revert_error_42b3090547df1d2001c96683413b8cf91c1b902ef5e3cb8d9f6f304cf7446f74()
@@ -1,10 +1,12 @@
{"contracts":{"A":{"object":{"evm":{"assembly":" /* \"A\":17:18 */
{"contracts":{"A":{"object":{"evm":{"assembly":" /* \"A\":38:39 */
0x00
/* \"A\":11:19 */
dup1
mload
/* \"A\":20:40 */
sstore
/* \"A\":0:42 */
stop
","bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"<BYTECODE REMOVED>","opcodes":"<OPCODES REMOVED>","sourceMap":"<SOURCEMAP REMOVED>"}},"ir":"object \"object\" {
code {
let x := mload(0)
@@ -1,10 +1,12 @@
{"contracts":{"A":{"object":{"evm":{"assembly":" /* \"A\":17:18 */
0x00
dup1
/* \"A\":11:19 */
dup1
mload
/* \"A\":20:40 */
sstore
/* \"A\":0:42 */
stop
","bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"<BYTECODE REMOVED>","opcodes":"<OPCODES REMOVED>","sourceMap":"<SOURCEMAP REMOVED>"}},"ir":"object \"object\" {
code {
let x := mload(0)
@@ -1,17 +1,15 @@
{"contracts":{"A":{"object":{"evm":{"assembly":" /* \"A\":16:17 */
0x01
dup1
/* \"A\":27:28 */
0x00
/* \"A\":20:32 */
sstore
pop
/* \"A\":50:51 */
0x02
dup1
/* \"A\":61:63 */
0x20
/* \"A\":54:67 */
sstore
pop
/* \"A\":0:72 */
stop
"}}}},"errors":[{"component":"general","formattedMessage":"Yul is still experimental. Please use the output with care.","message":"Yul is still experimental. Please use the output with care.","severity":"warning","type":"Warning"}]}
@@ -25,7 +25,7 @@ object "C_6" {
Binary representation:
60806040523415600e57600080fd5b600e601c600039600e6000f3fe60806040523615600055600080fd
608060405234601557600e601b600039600e6000f35b600080fdfe60806040523615600055600080fd
Text representation:
/* "strict_asm_optimizer_steps/input.yul":45:48 */
@@ -37,17 +37,8 @@ Text representation:
/* "strict_asm_optimizer_steps/input.yul":61:72 */
callvalue
/* "strict_asm_optimizer_steps/input.yul":58:89 */
iszero
tag_1
jumpi
/* "strict_asm_optimizer_steps/input.yul":85:86 */
0x00
/* "strict_asm_optimizer_steps/input.yul":82:83 */
dup1
/* "strict_asm_optimizer_steps/input.yul":75:87 */
revert
/* "strict_asm_optimizer_steps/input.yul":58:89 */
tag_1:
/* "strict_asm_optimizer_steps/input.yul":138:162 */
dataSize(sub_0)
/* "strict_asm_optimizer_steps/input.yul":110:136 */
@@ -62,6 +53,13 @@ tag_1:
0x00
/* "strict_asm_optimizer_steps/input.yul":172:207 */
return
/* "strict_asm_optimizer_steps/input.yul":73:89 */
tag_1:
/* "strict_asm_optimizer_steps/input.yul":85:86 */
0x00
/* "strict_asm_optimizer_steps/input.yul":75:87 */
dup1
revert
stop
sub_0: assembly {
@@ -81,8 +79,7 @@ sub_0: assembly {
sstore
/* "strict_asm_optimizer_steps/input.yul":576:577 */
0x00
/* "strict_asm_optimizer_steps/input.yul":573:574 */
dup1
/* "strict_asm_optimizer_steps/input.yul":566:578 */
dup1
revert
}
@@ -0,0 +1 @@
--strict-assembly --optimize --asm
@@ -0,0 +1 @@
Warning: Yul is still experimental. Please use the output with care.
@@ -0,0 +1,4 @@
{
let x := 42
sstore(0, x)
}
@@ -0,0 +1,12 @@
======= strict_asm_output_selection_asm_only/input.yul (EVM) =======
Text representation:
/* "strict_asm_output_selection_asm_only/input.yul":15:17 */
0x2a
/* "strict_asm_output_selection_asm_only/input.yul":29:30 */
0x00
/* "strict_asm_output_selection_asm_only/input.yul":22:34 */
sstore
/* "strict_asm_output_selection_asm_only/input.yul":0:36 */
stop
@@ -0,0 +1 @@
--strict-assembly --optimize --bin
@@ -0,0 +1 @@
Warning: Yul is still experimental. Please use the output with care.
@@ -0,0 +1,4 @@
{
let x := 42
sstore(0, x)
}
@@ -0,0 +1,5 @@
======= strict_asm_output_selection_bin_only/input.yul (EVM) =======
Binary representation:
602a60005500
@@ -0,0 +1 @@
--strict-assembly --optimize --ewasm-ir
@@ -0,0 +1 @@
Warning: Yul is still experimental. Please use the output with care.
@@ -0,0 +1,4 @@
{
let x := 42
sstore(0, x)
}
@@ -0,0 +1,2 @@
======= strict_asm_output_selection_ewasm_ir_only/input.yul (EVM) =======
@@ -0,0 +1 @@
--strict-assembly --optimize --ewasm
@@ -0,0 +1 @@
Warning: Yul is still experimental. Please use the output with care.
@@ -0,0 +1,4 @@
{
let x := 42
sstore(0, x)
}
@@ -0,0 +1,2 @@
======= strict_asm_output_selection_ewasm_only/input.yul (EVM) =======
@@ -1 +1 @@
The following outputs are not supported in assembler mode: --abi, --asm, --asm-json, --bin, --bin-runtime, --devdoc, --ewasm, --hashes, --ir, --ir-optimized, --metadata, --opcodes, --storage-layout, --userdoc.
The following outputs are not supported in assembler mode: --abi, --asm-json, --bin-runtime, --devdoc, --hashes, --ir, --metadata, --opcodes, --storage-layout, --userdoc.
@@ -0,0 +1 @@
--strict-assembly --optimize --ir-optimized
@@ -0,0 +1 @@
Warning: Yul is still experimental. Please use the output with care.
@@ -0,0 +1,4 @@
{
let x := 42
sstore(0, x)
}
@@ -0,0 +1,7 @@
======= strict_asm_output_selection_ir_optimized_only/input.yul (EVM) =======
Pretty printed source:
object "object" {
code { { sstore(0, 42) } }
}
+2 -2
View File
@@ -11,7 +11,7 @@ IR:
object "test_11" {
code {
/// @src 0:79:169 "contract test {..."
mstore(64, 128)
mstore(64, memoryguard(128))
if callvalue() { revert_error_ca66f745a3ce8ff40e2ccaf1ad45db7774001b90d25810abd9040049be7bf4bb() }
constructor_test_11()
@@ -42,7 +42,7 @@ object "test_11" {
object "test_11_deployed" {
code {
/// @src 0:79:169 "contract test {..."
mstore(64, 128)
mstore(64, memoryguard(128))
if iszero(lt(calldatasize(), 4))
{
+32 -29
View File
@@ -17,11 +17,12 @@ object "C_3" {
code {
{
/// @src 0:82:95 "contract C {}"
mstore(64, 128)
let _1 := memoryguard(0x80)
mstore(64, _1)
if callvalue() { revert(0, 0) }
let _1 := datasize("C_3_deployed")
codecopy(128, dataoffset("C_3_deployed"), _1)
return(128, _1)
let _2 := datasize("C_3_deployed")
codecopy(_1, dataoffset("C_3_deployed"), _2)
return(_1, _2)
}
}
/// @use-src 0:"viair_subobjects/input.sol"
@@ -29,7 +30,7 @@ object "C_3" {
code {
{
/// @src 0:82:95 "contract C {}"
mstore(64, 128)
mstore(64, memoryguard(0x80))
revert(0, 0)
}
}
@@ -56,11 +57,12 @@ object "D_16" {
code {
{
/// @src 0:96:165 "contract D {..."
mstore(64, 128)
let _1 := memoryguard(0x80)
mstore(64, _1)
if callvalue() { revert(0, 0) }
let _1 := datasize("D_16_deployed")
codecopy(128, dataoffset("D_16_deployed"), _1)
return(128, _1)
let _2 := datasize("D_16_deployed")
codecopy(_1, dataoffset("D_16_deployed"), _2)
return(_1, _2)
}
}
/// @use-src 0:"viair_subobjects/input.sol"
@@ -68,35 +70,35 @@ object "D_16" {
code {
{
/// @src 0:96:165 "contract D {..."
mstore(64, 128)
let _1 := memoryguard(0x80)
mstore(64, _1)
if iszero(lt(calldatasize(), 4))
{
let _1 := 0
if eq(0x26121ff0, shr(224, calldataload(_1)))
let _2 := 0
if eq(0x26121ff0, shr(224, calldataload(_2)))
{
if callvalue() { revert(_1, _1) }
if slt(add(calldatasize(), not(3)), _1) { revert(_1, _1) }
/// @src 0:149:156 "new C()"
let _2 := datasize("C_3")
let _3 := add(/** @src 0:96:165 "contract D {..." */ 128, /** @src 0:149:156 "new C()" */ _2)
if or(gt(_3, 0xffffffffffffffff), lt(_3, /** @src 0:96:165 "contract D {..." */ 128))
if callvalue() { revert(_2, _2) }
if slt(add(calldatasize(), not(3)), _2) { revert(_2, _2) }
/// @src 0:149:156 "new C()"
let _3 := datasize("C_3")
let _4 := add(_1, _3)
if or(gt(_4, 0xffffffffffffffff), lt(_4, _1))
{
/// @src 0:96:165 "contract D {..."
mstore(_1, shl(224, 0x4e487b71))
mstore(_2, shl(224, 0x4e487b71))
mstore(4, 0x41)
revert(_1, 0x24)
revert(_2, 0x24)
}
/// @src 0:149:156 "new C()"
datacopy(/** @src 0:96:165 "contract D {..." */ 128, /** @src 0:149:156 "new C()" */ dataoffset("C_3"), _2)
if iszero(create(/** @src 0:96:165 "contract D {..." */ _1, 128, /** @src 0:149:156 "new C()" */ _2))
datacopy(_1, dataoffset("C_3"), _3)
if iszero(create(/** @src 0:96:165 "contract D {..." */ _2, /** @src 0:149:156 "new C()" */ _1, sub(_4, _1)))
{
/// @src 0:96:165 "contract D {..."
let pos := mload(64)
returndatacopy(pos, _1, returndatasize())
returndatacopy(pos, _2, returndatasize())
revert(pos, returndatasize())
}
return(mload(64), _1)
return(mload(64), _2)
}
}
revert(0, 0)
@@ -107,11 +109,12 @@ object "D_16" {
code {
{
/// @src 0:82:95 "contract C {}"
mstore(64, 128)
let _1 := memoryguard(0x80)
mstore(64, _1)
if callvalue() { revert(0, 0) }
let _1 := datasize("C_3_deployed")
codecopy(128, dataoffset("C_3_deployed"), _1)
return(128, _1)
let _2 := datasize("C_3_deployed")
codecopy(_1, dataoffset("C_3_deployed"), _2)
return(_1, _2)
}
}
/// @use-src 0:"viair_subobjects/input.sol"
@@ -119,7 +122,7 @@ object "D_16" {
code {
{
/// @src 0:82:95 "contract C {}"
mstore(64, 128)
mstore(64, memoryguard(0x80))
revert(0, 0)
}
}
+4 -4
View File
@@ -21,20 +21,18 @@ object "RunsTest1" {
Binary representation:
602480600d600039806000f3fe7fabc1234500000000000000000000000000000000000000000000000000000000600055
602580600c6000396000f3fe7fabc123450000000000000000000000000000000000000000000000000000000060005500
Text representation:
/* "yul_optimize_runs/input.yul":106:125 */
dataSize(sub_0)
dup1
/* "yul_optimize_runs/input.yul":83:104 */
dup1
dataOffset(sub_0)
/* "yul_optimize_runs/input.yul":80:81 */
0x00
/* "yul_optimize_runs/input.yul":71:126 */
codecopy
/* "yul_optimize_runs/input.yul":145:164 */
dup1
/* "yul_optimize_runs/input.yul":80:81 */
0x00
/* "yul_optimize_runs/input.yul":135:165 */
@@ -48,4 +46,6 @@ sub_0: assembly {
0x00
/* "yul_optimize_runs/input.yul":270:288 */
sstore
/* "yul_optimize_runs/input.yul":208:298 */
stop
}
+2 -2
View File
@@ -11,7 +11,7 @@ object "C_7" {
code {
{
/// @src 0:80:112 "contract C..."
mstore(64, 128)
mstore(64, memoryguard(0x80))
if callvalue()
{
revert_error_ca66f745a3ce8ff40e2ccaf1ad45db7774001b90d25810abd9040049be7bf4bb()
@@ -30,7 +30,7 @@ object "C_7" {
code {
{
/// @src 0:80:112 "contract C..."
mstore(64, 128)
mstore(64, memoryguard(0x80))
revert_error_42b3090547df1d2001c96683413b8cf91c1b902ef5e3cb8d9f6f304cf7446f74()
}
function revert_error_42b3090547df1d2001c96683413b8cf91c1b902ef5e3cb8d9f6f304cf7446f74()
@@ -11,7 +11,7 @@ object "C_6" {
code {
{
/// @src 0:60:103 "contract C..."
mstore(64, 128)
mstore(64, memoryguard(0x80))
if callvalue()
{
revert_error_ca66f745a3ce8ff40e2ccaf1ad45db7774001b90d25810abd9040049be7bf4bb()
@@ -121,7 +121,7 @@ object "C_6" {
code {
{
/// @src 0:60:103 "contract C..."
mstore(64, 128)
mstore(64, memoryguard(0x80))
if iszero(lt(calldatasize(), 4))
{
let selector := shift_right_unsigned(calldataload(0))
@@ -10,7 +10,7 @@
object \"C_11\" {
code {
/// @src 0:78:164 \"contract C { function f() external pure returns (string memory) { return \\\"abcabc\\\"; } }\"
mstore(64, 128)
mstore(64, memoryguard(128))
if callvalue() { revert_error_ca66f745a3ce8ff40e2ccaf1ad45db7774001b90d25810abd9040049be7bf4bb() }
constructor_C_11()
@@ -41,7 +41,7 @@ object \"C_11\" {
object \"C_11_deployed\" {
code {
/// @src 0:78:164 \"contract C { function f() external pure returns (string memory) { return \\\"abcabc\\\"; } }\"
mstore(64, 128)
mstore(64, memoryguard(128))
if iszero(lt(calldatasize(), 4))
{
@@ -10,7 +10,7 @@
object \"C_11\" {
code {
/// @src 0:78:158 \"contract C { function f() external pure returns (bytes32) { return \\\"abcabc\\\"; } }\"
mstore(64, 128)
mstore(64, memoryguard(128))
if callvalue() { revert_error_ca66f745a3ce8ff40e2ccaf1ad45db7774001b90d25810abd9040049be7bf4bb() }
constructor_C_11()
@@ -41,7 +41,7 @@ object \"C_11\" {
object \"C_11_deployed\" {
code {
/// @src 0:78:158 \"contract C { function f() external pure returns (bytes32) { return \\\"abcabc\\\"; } }\"
mstore(64, 128)
mstore(64, memoryguard(128))
if iszero(lt(calldatasize(), 4))
{
@@ -10,7 +10,7 @@
object \"C_11\" {
code {
/// @src 0:78:159 \"contract C { function f() external pure returns (bytes4) { return 0x61626364; } }\"
mstore(64, 128)
mstore(64, memoryguard(128))
if callvalue() { revert_error_ca66f745a3ce8ff40e2ccaf1ad45db7774001b90d25810abd9040049be7bf4bb() }
constructor_C_11()
@@ -41,7 +41,7 @@ object \"C_11\" {
object \"C_11_deployed\" {
code {
/// @src 0:78:159 \"contract C { function f() external pure returns (bytes4) { return 0x61626364; } }\"
mstore(64, 128)
mstore(64, memoryguard(128))
if iszero(lt(calldatasize(), 4))
{
@@ -10,7 +10,7 @@
object \"C_11\" {
code {
/// @src 0:78:243 \"contract C { function f() external pure returns (string memory) { return \\\"abcdabcdcafecafeabcdabcdcafecafeffffzzzzoooo0123456789,.<,>.?:;'[{]}|`~!@#$%^&*()-_=+\\\"; } }\"
mstore(64, 128)
mstore(64, memoryguard(128))
if callvalue() { revert_error_ca66f745a3ce8ff40e2ccaf1ad45db7774001b90d25810abd9040049be7bf4bb() }
constructor_C_11()
@@ -41,7 +41,7 @@ object \"C_11\" {
object \"C_11_deployed\" {
code {
/// @src 0:78:243 \"contract C { function f() external pure returns (string memory) { return \\\"abcdabcdcafecafeabcdabcdcafecafeffffzzzzoooo0123456789,.<,>.?:;'[{]}|`~!@#$%^&*()-_=+\\\"; } }\"
mstore(64, 128)
mstore(64, memoryguard(128))
if iszero(lt(calldatasize(), 4))
{
@@ -10,7 +10,7 @@
object \"C_11\" {
code {
/// @src 0:78:159 \"contract C { function f() external pure returns (bytes4) { return 0xaabbccdd; } }\"
mstore(64, 128)
mstore(64, memoryguard(128))
if callvalue() { revert_error_ca66f745a3ce8ff40e2ccaf1ad45db7774001b90d25810abd9040049be7bf4bb() }
constructor_C_11()
@@ -41,7 +41,7 @@ object \"C_11\" {
object \"C_11_deployed\" {
code {
/// @src 0:78:159 \"contract C { function f() external pure returns (bytes4) { return 0xaabbccdd; } }\"
mstore(64, 128)
mstore(64, memoryguard(128))
if iszero(lt(calldatasize(), 4))
{
+3 -1
View File
@@ -14,7 +14,7 @@ object "object" {
Binary representation:
612000515061616002600055
61200051506161600260005500
Text representation:
/* "yul_verbatim_msize/input.yul":125:131 */
@@ -30,3 +30,5 @@ Text representation:
0x00
/* "yul_verbatim_msize/input.yul":162:174 */
sstore
/* "yul_verbatim_msize/input.yul":0:176 */
stop