mirror of
https://github.com/ethereum/solidity
synced 2023-10-03 13:03:40 +00:00
Merge remote-tracking branch 'origin/develop' into breaking
This commit is contained in:
@@ -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)
|
||||
)
|
||||
|
||||
)
|
||||
@@ -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)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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 {}
|
||||
@@ -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)
|
||||
|
||||
+14
-12
@@ -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) } }
|
||||
}
|
||||
@@ -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))
|
||||
{
|
||||
|
||||
@@ -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)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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
|
||||
}
|
||||
|
||||
@@ -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))
|
||||
{
|
||||
|
||||
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user