mirror of
https://github.com/ethereum/solidity
synced 2023-10-03 13:03:40 +00:00
Merge pull request #11328 from ethereum/respectMemoryModelForInit
Respect memory model for init
This commit is contained in:
commit
f1d58c549b
libsolidity/codegen/ir
test
cmdlineTests
constant_optimizer_yul
exp_base_literal
ir_compiler_inheritance_nosubobjects
ir_compiler_subobjects
ir_with_assembly_no_memoryguard_creation
ir_with_assembly_no_memoryguard_runtime
keccak_optimization_deploy_code
keccak_optimization_low_runs
name_simplifier
optimizer_array_sload
standard_ewasm_requested
standard_irOptimized_requested
standard_ir_requested
standard_viair_requested
viair_abicoder_v1
viair_subobjects
yul_optimizer_steps
yul_string_format_ascii
yul_string_format_ascii_bytes32
yul_string_format_ascii_bytes32_from_number
yul_string_format_ascii_long
yul_string_format_hex
libsolidity/semanticTests
abiEncoderV2
abi_encode_v2_in_function_inherited_in_v1_contract.solabi_encode_v2_in_modifier_used_in_v1_contract.sol
array
constructor
functionTypes
immutable
inheritance
address_overload_resolution.solinherited_function_calldata_calldata_interface.solinherited_function_calldata_memory_interface.sol
interface_inheritance_conversions.solsalted_create
@ -802,29 +802,24 @@ void IRGenerator::generateImplicitConstructors(ContractDefinition const& _contra
|
|||||||
string IRGenerator::deployCode(ContractDefinition const& _contract)
|
string IRGenerator::deployCode(ContractDefinition const& _contract)
|
||||||
{
|
{
|
||||||
Whiskers t(R"X(
|
Whiskers t(R"X(
|
||||||
<#loadImmutables>
|
let <codeOffset> := <allocateUnbounded>()
|
||||||
let <var> := mload(<memoryOffset>)
|
codecopy(<codeOffset>, dataoffset("<object>"), datasize("<object>"))
|
||||||
</loadImmutables>
|
<#immutables>
|
||||||
|
setimmutable(<codeOffset>, "<immutableName>", <value>)
|
||||||
codecopy(0, dataoffset("<object>"), datasize("<object>"))
|
</immutables>
|
||||||
|
return(<codeOffset>, datasize("<object>"))
|
||||||
<#storeImmutables>
|
|
||||||
setimmutable(0, "<immutableName>", <var>)
|
|
||||||
</storeImmutables>
|
|
||||||
|
|
||||||
return(0, datasize("<object>"))
|
|
||||||
)X");
|
)X");
|
||||||
|
t("allocateUnbounded", m_utils.allocateUnboundedFunction());
|
||||||
|
t("codeOffset", m_context.newYulVariable());
|
||||||
t("object", IRNames::deployedObject(_contract));
|
t("object", IRNames::deployedObject(_contract));
|
||||||
|
|
||||||
vector<map<string, string>> loadImmutables;
|
vector<map<string, string>> immutables;
|
||||||
vector<map<string, string>> storeImmutables;
|
|
||||||
|
|
||||||
if (_contract.isLibrary())
|
if (_contract.isLibrary())
|
||||||
{
|
{
|
||||||
solAssert(ContractType(_contract).immutableVariables().empty(), "");
|
solAssert(ContractType(_contract).immutableVariables().empty(), "");
|
||||||
storeImmutables.emplace_back(map<string, string>{
|
immutables.emplace_back(map<string, string>{
|
||||||
{"var"s, "address()"},
|
{"immutableName"s, IRNames::libraryAddressImmutable()},
|
||||||
{"immutableName"s, IRNames::libraryAddressImmutable()}
|
{"value"s, "address()"}
|
||||||
});
|
});
|
||||||
|
|
||||||
}
|
}
|
||||||
@ -833,20 +828,12 @@ string IRGenerator::deployCode(ContractDefinition const& _contract)
|
|||||||
{
|
{
|
||||||
solUnimplementedAssert(immutable->type()->isValueType(), "");
|
solUnimplementedAssert(immutable->type()->isValueType(), "");
|
||||||
solUnimplementedAssert(immutable->type()->sizeOnStack() == 1, "");
|
solUnimplementedAssert(immutable->type()->sizeOnStack() == 1, "");
|
||||||
string yulVar = m_context.newYulVariable();
|
immutables.emplace_back(map<string, string>{
|
||||||
loadImmutables.emplace_back(map<string, string>{
|
{"immutableName"s, to_string(immutable->id())},
|
||||||
{"var"s, yulVar},
|
{"value"s, "mload(" + to_string(m_context.immutableMemoryOffset(*immutable)) + ")"}
|
||||||
{"memoryOffset"s, to_string(m_context.immutableMemoryOffset(*immutable))}
|
|
||||||
});
|
|
||||||
storeImmutables.emplace_back(map<string, string>{
|
|
||||||
{"var"s, yulVar},
|
|
||||||
{"immutableName"s, to_string(immutable->id())}
|
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
t("loadImmutables", std::move(loadImmutables));
|
t("immutables", std::move(immutables));
|
||||||
// reverse order to ease stack strain
|
|
||||||
reverse(storeImmutables.begin(), storeImmutables.end());
|
|
||||||
t("storeImmutables", std::move(storeImmutables));
|
|
||||||
return t.render();
|
return t.render();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -13,8 +13,8 @@ object "C_12" {
|
|||||||
if callvalue() { revert(0, 0) }
|
if callvalue() { revert(0, 0) }
|
||||||
sstore(0, shl(180, 1))
|
sstore(0, shl(180, 1))
|
||||||
let _1 := datasize("C_12_deployed")
|
let _1 := datasize("C_12_deployed")
|
||||||
codecopy(0, dataoffset("C_12_deployed"), _1)
|
codecopy(128, dataoffset("C_12_deployed"), _1)
|
||||||
return(0, _1)
|
return(128, _1)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
object "C_12_deployed" {
|
object "C_12_deployed" {
|
||||||
|
@ -14,9 +14,14 @@ object "C_81" {
|
|||||||
|
|
||||||
constructor_C_81()
|
constructor_C_81()
|
||||||
|
|
||||||
codecopy(0, dataoffset("C_81_deployed"), datasize("C_81_deployed"))
|
let _1 := allocate_unbounded()
|
||||||
|
codecopy(_1, dataoffset("C_81_deployed"), datasize("C_81_deployed"))
|
||||||
|
|
||||||
return(0, datasize("C_81_deployed"))
|
return(_1, datasize("C_81_deployed"))
|
||||||
|
|
||||||
|
function allocate_unbounded() -> memPtr {
|
||||||
|
memPtr := mload(64)
|
||||||
|
}
|
||||||
|
|
||||||
function constructor_C_81() {
|
function constructor_C_81() {
|
||||||
|
|
||||||
|
@ -12,8 +12,8 @@ object "C_7" {
|
|||||||
mstore(64, 128)
|
mstore(64, 128)
|
||||||
if callvalue() { revert(0, 0) }
|
if callvalue() { revert(0, 0) }
|
||||||
let _1 := datasize("C_7_deployed")
|
let _1 := datasize("C_7_deployed")
|
||||||
codecopy(0, dataoffset("C_7_deployed"), _1)
|
codecopy(128, dataoffset("C_7_deployed"), _1)
|
||||||
return(0, _1)
|
return(128, _1)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
object "C_7_deployed" {
|
object "C_7_deployed" {
|
||||||
@ -40,8 +40,8 @@ object "D_10" {
|
|||||||
mstore(64, 128)
|
mstore(64, 128)
|
||||||
if callvalue() { revert(0, 0) }
|
if callvalue() { revert(0, 0) }
|
||||||
let _1 := datasize("D_10_deployed")
|
let _1 := datasize("D_10_deployed")
|
||||||
codecopy(0, dataoffset("D_10_deployed"), _1)
|
codecopy(128, dataoffset("D_10_deployed"), _1)
|
||||||
return(0, _1)
|
return(128, _1)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
object "D_10_deployed" {
|
object "D_10_deployed" {
|
||||||
|
@ -12,8 +12,8 @@ object "C_3" {
|
|||||||
mstore(64, 128)
|
mstore(64, 128)
|
||||||
if callvalue() { revert(0, 0) }
|
if callvalue() { revert(0, 0) }
|
||||||
let _1 := datasize("C_3_deployed")
|
let _1 := datasize("C_3_deployed")
|
||||||
codecopy(0, dataoffset("C_3_deployed"), _1)
|
codecopy(128, dataoffset("C_3_deployed"), _1)
|
||||||
return(0, _1)
|
return(128, _1)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
object "C_3_deployed" {
|
object "C_3_deployed" {
|
||||||
@ -40,8 +40,8 @@ object "D_16" {
|
|||||||
mstore(64, 128)
|
mstore(64, 128)
|
||||||
if callvalue() { revert(0, 0) }
|
if callvalue() { revert(0, 0) }
|
||||||
let _1 := datasize("D_16_deployed")
|
let _1 := datasize("D_16_deployed")
|
||||||
codecopy(0, dataoffset("D_16_deployed"), _1)
|
codecopy(128, dataoffset("D_16_deployed"), _1)
|
||||||
return(0, _1)
|
return(128, _1)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
object "D_16_deployed" {
|
object "D_16_deployed" {
|
||||||
@ -82,8 +82,8 @@ object "D_16" {
|
|||||||
mstore(64, 128)
|
mstore(64, 128)
|
||||||
if callvalue() { revert(0, 0) }
|
if callvalue() { revert(0, 0) }
|
||||||
let _1 := datasize("C_3_deployed")
|
let _1 := datasize("C_3_deployed")
|
||||||
codecopy(0, dataoffset("C_3_deployed"), _1)
|
codecopy(128, dataoffset("C_3_deployed"), _1)
|
||||||
return(0, _1)
|
return(128, _1)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
object "C_3_deployed" {
|
object "C_3_deployed" {
|
||||||
|
@ -12,8 +12,8 @@ object "D_12" {
|
|||||||
mstore(64, 128)
|
mstore(64, 128)
|
||||||
if callvalue() { revert(0, 0) }
|
if callvalue() { revert(0, 0) }
|
||||||
let _1 := datasize("D_12_deployed")
|
let _1 := datasize("D_12_deployed")
|
||||||
codecopy(0, dataoffset("D_12_deployed"), _1)
|
codecopy(128, dataoffset("D_12_deployed"), _1)
|
||||||
return(0, _1)
|
return(128, _1)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
object "D_12_deployed" {
|
object "D_12_deployed" {
|
||||||
|
@ -12,8 +12,8 @@ object "D_8" {
|
|||||||
mstore(64, 128)
|
mstore(64, 128)
|
||||||
if callvalue() { revert(0, 0) }
|
if callvalue() { revert(0, 0) }
|
||||||
let _1 := datasize("D_8_deployed")
|
let _1 := datasize("D_8_deployed")
|
||||||
codecopy(0, dataoffset("D_8_deployed"), _1)
|
codecopy(128, dataoffset("D_8_deployed"), _1)
|
||||||
return(0, _1)
|
return(128, _1)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
object "D_8_deployed" {
|
object "D_8_deployed" {
|
||||||
|
@ -14,8 +14,8 @@ object "C_12" {
|
|||||||
mstore(0, 100)
|
mstore(0, 100)
|
||||||
sstore(0, keccak256(0, 32))
|
sstore(0, keccak256(0, 32))
|
||||||
let _1 := datasize("C_12_deployed")
|
let _1 := datasize("C_12_deployed")
|
||||||
codecopy(0, dataoffset("C_12_deployed"), _1)
|
codecopy(128, dataoffset("C_12_deployed"), _1)
|
||||||
return(0, _1)
|
return(128, _1)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
object "C_12_deployed" {
|
object "C_12_deployed" {
|
||||||
|
@ -12,8 +12,8 @@ object "C_7" {
|
|||||||
mstore(64, 128)
|
mstore(64, 128)
|
||||||
if callvalue() { revert(0, 0) }
|
if callvalue() { revert(0, 0) }
|
||||||
let _1 := datasize("C_7_deployed")
|
let _1 := datasize("C_7_deployed")
|
||||||
codecopy(0, dataoffset("C_7_deployed"), _1)
|
codecopy(128, dataoffset("C_7_deployed"), _1)
|
||||||
return(0, _1)
|
return(128, _1)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
object "C_7_deployed" {
|
object "C_7_deployed" {
|
||||||
|
@ -12,8 +12,8 @@ object "C_59" {
|
|||||||
mstore(64, 128)
|
mstore(64, 128)
|
||||||
if callvalue() { revert(0, 0) }
|
if callvalue() { revert(0, 0) }
|
||||||
let _1 := datasize("C_59_deployed")
|
let _1 := datasize("C_59_deployed")
|
||||||
codecopy(0, dataoffset("C_59_deployed"), _1)
|
codecopy(128, dataoffset("C_59_deployed"), _1)
|
||||||
return(0, _1)
|
return(128, _1)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
object "C_59_deployed" {
|
object "C_59_deployed" {
|
||||||
|
@ -12,8 +12,8 @@ object "Arraysum_34" {
|
|||||||
mstore(64, 128)
|
mstore(64, 128)
|
||||||
if callvalue() { revert(0, 0) }
|
if callvalue() { revert(0, 0) }
|
||||||
let _1 := datasize("Arraysum_34_deployed")
|
let _1 := datasize("Arraysum_34_deployed")
|
||||||
codecopy(0, dataoffset("Arraysum_34_deployed"), _1)
|
codecopy(128, dataoffset("Arraysum_34_deployed"), _1)
|
||||||
return(0, _1)
|
return(128, _1)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
object "Arraysum_34_deployed" {
|
object "Arraysum_34_deployed" {
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
{"contracts":{"A":{"C":{"ewasm":{"wasm":"0061736d010000000125086000006000017e6000017f60017e017f60017f0060017f017f60027f7f0060037f7f7f0002510408657468657265756d08636f6465436f7079000708657468657265756d06726576657274000608657468657265756d0c67657443616c6c56616c7565000408657468657265756d0666696e697368000603090800020302020505010503010001060100071102066d656d6f72790200046d61696e000400b6030c435f335f6465706c6f7965640061736d010000000112046000006000017f60017f017f60027f7f0002130108657468657265756d06726576657274000303060500010102020503010001060100071102066d656d6f72790200046d61696e00010ad20205a10104027f017e017f047e024010022100200041c0006a210120012000490440000b420021022002a7210320031005ad42208621042002422088210520042005a71005ad84210620012006370000200141086a2006370000200141106a2006370000428001a71005ad4220862107200141186a2007428001422088a71005ad8437000020022002200284200284520440000b20022005520440000b1003200310000b0b2b01017f024042004200420084420084520440000b420042c000422088520440000b42c000a721000b20000b4203017f017e017f02404200210120012001200184200184520440000b20012001422088520440000b2001a72102200241c0006a210020002002490440000b0b20000b1f01017f024020004108744180fe0371200041087641ff01717221010b20010b1e01027f02402000100441107421022002200041107610047221010b20010b0aa603089a0102027f047e024010072100200041c0006a210120012000490440000b4200a7100aad422086210220024200422088a7100aad84210320012003370000200141086a2003370000200141106a2003370000200141186a100b37000041001002410829000021044200420084200441002900008484504504401008100510010b42a9032105100842b801100620051006100010082005100610030b0b2f02017f017e02404200210120012001200184200184520440000b20012001422088520440000b2001a721000b20000b2901017f024042004200420084420084520440000b42002000422088520440000b2000a721010b20010b2b01017f024042004200420084420084520440000b420042c000422088520440000b42c000a721000b20000b1e01027f024010052101200141c0006a210020002001490440000b0b20000b1f01017f024020004108744180fe0371200041087641ff01717221010b20010b1e01027f02402000100941107421022002200041107610097221010b20010b2401027e0240428001a7100aad42208621012001428001422088a7100aad8421000b20000b","wast":"(module
|
{"contracts":{"A":{"C":{"ewasm":{"wasm":"0061736d010000000125086000006000017e6000017f60017e017f60017f0060017f017f60027f7f0060037f7f7f0002510408657468657265756d08636f6465436f7079000708657468657265756d06726576657274000608657468657265756d0c67657443616c6c56616c7565000408657468657265756d0666696e6973680006030a090002030202020505010503010001060100071102066d656d6f72790200046d61696e000400b6030c435f335f6465706c6f7965640061736d010000000112046000006000017f60017f017f60027f7f0002130108657468657265756d06726576657274000303060500010102020503010001060100071102066d656d6f72790200046d61696e00010ad20205a10104027f017e017f047e024010022100200041c0006a210120012000490440000b420021022002a7210320031005ad42208621042002422088210520042005a71005ad84210620012006370000200141086a2006370000200141106a2006370000428001a71005ad4220862107200141186a2007428001422088a71005ad8437000020022002200284200284520440000b20022005520440000b1003200310000b0b2b01017f024042004200420084420084520440000b420042c000422088520440000b42c000a721000b20000b4203017f017e017f02404200210120012001200184200184520440000b20012001422088520440000b2001a72102200241c0006a210020002002490440000b0b20000b1f01017f024020004108744180fe0371200041087641ff01717221010b20010b1e01027f02402000100441107421022002200041107610047221010b20010b0ae303099a0102027f047e024010072100200041c0006a210120012000490440000b4200a7100bad422086210220024200422088a7100bad84210320012003370000200141086a2003370000200141106a2003370000200141186a100c37000041001002410829000021044200420084200441002900008484504504401008100510010b42a9032105100942b901100620051006100010092005100610030b0b2f02017f017e02404200210120012001200184200184520440000b20012001422088520440000b2001a721000b20000b2901017f024042004200420084420084520440000b42002000422088520440000b2000a721010b20010b2b01017f024042004200420084420084520440000b420042c000422088520440000b42c000a721000b20000b1e01027f024010052101200141c0006a210020002001490440000b0b20000b3c01027f024042004200420084420084520440000b4200428001422088520440000b428001a72101200141c0006a210020002001490440000b0b20000b1f01017f024020004108744180fe0371200041087641ff01717221010b20010b1e01027f02402000100a411074210220022000411076100a7221010b20010b2401027e0240428001a7100bad42208621012001428001422088a7100bad8421000b20000b","wast":"(module
|
||||||
;; custom section for sub-module
|
;; custom section for sub-module
|
||||||
;; The Keccak-256 hash of the text representation of \"C_3_deployed\": d5523336521d49fa8bd64dba28ece7291aa7d45c646a23eabd038bbeecc2d803
|
;; The Keccak-256 hash of the text representation of \"C_3_deployed\": d5523336521d49fa8bd64dba28ece7291aa7d45c646a23eabd038bbeecc2d803
|
||||||
;; (@custom \"C_3_deployed\" \"0061736d010000000112046000006000017f60017f017f60027f7f0002130108657468657265756d06726576657274000303060500010102020503010001060100071102066d656d6f72790200046d61696e00010ad20205a10104027f017e017f047e024010022100200041c0006a210120012000490440000b420021022002a7210320031005ad42208621042002422088210520042005a71005ad84210620012006370000200141086a2006370000200141106a2006370000428001a71005ad4220862107200141186a2007428001422088a71005ad8437000020022002200284200284520440000b20022005520440000b1003200310000b0b2b01017f024042004200420084420084520440000b420042c000422088520440000b42c000a721000b20000b4203017f017e017f02404200210120012001200184200184520440000b20012001422088520440000b2001a72102200241c0006a210020002002490440000b0b20000b1f01017f024020004108744180fe0371200041087641ff01717221010b20010b1e01027f02402000100441107421022002200041107610047221010b20010b\")
|
;; (@custom \"C_3_deployed\" \"0061736d010000000112046000006000017f60017f017f60027f7f0002130108657468657265756d06726576657274000303060500010102020503010001060100071102066d656d6f72790200046d61696e00010ad20205a10104027f017e017f047e024010022100200041c0006a210120012000490440000b420021022002a7210320031005ad42208621042002422088210520042005a71005ad84210620012006370000200141086a2006370000200141106a2006370000428001a71005ad4220862107200141186a2007428001422088a71005ad8437000020022002200284200284520440000b20022005520440000b1003200310000b0b2b01017f024042004200420084420084520440000b420042c000422088520440000b42c000a721000b20000b4203017f017e017f02404200210120012001200184200184520440000b20012001422088520440000b2001a72102200241c0006a210020002002490440000b0b20000b1f01017f024020004108744180fe0371200041087641ff01717221010b20010b1e01027f02402000100441107421022002200041107610047221010b20010b\")
|
||||||
@ -32,8 +32,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
|
(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) (call $u256_to_i32_344))))
|
||||||
(local.set $_1 (datasize \"C_3_deployed\"))
|
(local.set $_1 (datasize \"C_3_deployed\"))
|
||||||
(call $eth.codeCopy (call $to_internal_i32ptr) (call $u256_to_i32 (dataoffset \"C_3_deployed\")) (call $u256_to_i32 (local.get $_1)))
|
(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) (call $u256_to_i32 (local.get $_1)))
|
(call $eth.finish (call $to_internal_i32ptr_348) (call $u256_to_i32 (local.get $_1)))
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
|
|
||||||
@ -96,11 +96,29 @@
|
|||||||
(local.get $r)
|
(local.get $r)
|
||||||
)
|
)
|
||||||
|
|
||||||
|
(func $to_internal_i32ptr_348
|
||||||
|
(result i32)
|
||||||
|
(local $r i32)
|
||||||
|
(local $v i32)
|
||||||
|
(block $label__5
|
||||||
|
(if (i64.ne (i64.const 0) (i64.or (i64.or (i64.const 0) (i64.const 0)) (i64.const 0))) (then
|
||||||
|
(unreachable)))
|
||||||
|
(if (i64.ne (i64.const 0) (i64.shr_u (i64.const 128) (i64.const 32))) (then
|
||||||
|
(unreachable)))
|
||||||
|
(local.set $v (i32.wrap_i64 (i64.const 128)))
|
||||||
|
(local.set $r (i32.add (local.get $v) (i32.const 64)))
|
||||||
|
(if (i32.lt_u (local.get $r) (local.get $v)) (then
|
||||||
|
(unreachable)))
|
||||||
|
|
||||||
|
)
|
||||||
|
(local.get $r)
|
||||||
|
)
|
||||||
|
|
||||||
(func $bswap16
|
(func $bswap16
|
||||||
(param $x i32)
|
(param $x i32)
|
||||||
(result i32)
|
(result i32)
|
||||||
(local $y i32)
|
(local $y i32)
|
||||||
(block $label__5
|
(block $label__6
|
||||||
(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.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))))
|
||||||
|
|
||||||
)
|
)
|
||||||
@ -112,7 +130,7 @@
|
|||||||
(result i32)
|
(result i32)
|
||||||
(local $y i32)
|
(local $y i32)
|
||||||
(local $hi i32)
|
(local $hi i32)
|
||||||
(block $label__6
|
(block $label__7
|
||||||
(local.set $hi (i32.shl (call $bswap16 (local.get $x)) (i32.const 16)))
|
(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.set $y (i32.or (local.get $hi) (call $bswap16 (i32.shr_u (local.get $x) (i32.const 16)))))
|
||||||
|
|
||||||
@ -124,7 +142,7 @@
|
|||||||
(result i64)
|
(result i64)
|
||||||
(local $y i64)
|
(local $y i64)
|
||||||
(local $hi i64)
|
(local $hi i64)
|
||||||
(block $label__7
|
(block $label__8
|
||||||
(local.set $hi (i64.shl (i64.extend_i32_u (call $bswap32 (i32.wrap_i64 (i64.const 128)))) (i64.const 32)))
|
(local.set $hi (i64.shl (i64.extend_i32_u (call $bswap32 (i32.wrap_i64 (i64.const 128)))) (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 128) (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 128) (i64.const 32)))))))
|
||||||
|
|
||||||
|
@ -10,8 +10,11 @@ object \"C_7\" {
|
|||||||
mstore(64, 128)
|
mstore(64, 128)
|
||||||
if callvalue() { revert(0, 0) }
|
if callvalue() { revert(0, 0) }
|
||||||
constructor_C_7()
|
constructor_C_7()
|
||||||
codecopy(0, dataoffset(\"C_7_deployed\"), datasize(\"C_7_deployed\"))
|
let _1 := allocate_unbounded()
|
||||||
return(0, datasize(\"C_7_deployed\"))
|
codecopy(_1, dataoffset(\"C_7_deployed\"), datasize(\"C_7_deployed\"))
|
||||||
|
return(_1, datasize(\"C_7_deployed\"))
|
||||||
|
function allocate_unbounded() -> memPtr
|
||||||
|
{ memPtr := mload(64) }
|
||||||
function constructor_C_7()
|
function constructor_C_7()
|
||||||
{ }
|
{ }
|
||||||
}
|
}
|
||||||
|
@ -13,9 +13,14 @@ object \"C_7\" {
|
|||||||
|
|
||||||
constructor_C_7()
|
constructor_C_7()
|
||||||
|
|
||||||
codecopy(0, dataoffset(\"C_7_deployed\"), datasize(\"C_7_deployed\"))
|
let _1 := allocate_unbounded()
|
||||||
|
codecopy(_1, dataoffset(\"C_7_deployed\"), datasize(\"C_7_deployed\"))
|
||||||
|
|
||||||
return(0, datasize(\"C_7_deployed\"))
|
return(_1, datasize(\"C_7_deployed\"))
|
||||||
|
|
||||||
|
function allocate_unbounded() -> memPtr {
|
||||||
|
memPtr := mload(64)
|
||||||
|
}
|
||||||
|
|
||||||
function constructor_C_7() {
|
function constructor_C_7() {
|
||||||
|
|
||||||
|
@ -13,9 +13,14 @@ object \"C_3\" {
|
|||||||
|
|
||||||
constructor_C_3()
|
constructor_C_3()
|
||||||
|
|
||||||
codecopy(0, dataoffset(\"C_3_deployed\"), datasize(\"C_3_deployed\"))
|
let _1 := allocate_unbounded()
|
||||||
|
codecopy(_1, dataoffset(\"C_3_deployed\"), datasize(\"C_3_deployed\"))
|
||||||
|
|
||||||
return(0, datasize(\"C_3_deployed\"))
|
return(_1, datasize(\"C_3_deployed\"))
|
||||||
|
|
||||||
|
function allocate_unbounded() -> memPtr {
|
||||||
|
memPtr := mload(64)
|
||||||
|
}
|
||||||
|
|
||||||
function constructor_C_3() {
|
function constructor_C_3() {
|
||||||
|
|
||||||
@ -64,9 +69,14 @@ object \"D_16\" {
|
|||||||
|
|
||||||
constructor_D_16()
|
constructor_D_16()
|
||||||
|
|
||||||
codecopy(0, dataoffset(\"D_16_deployed\"), datasize(\"D_16_deployed\"))
|
let _1 := allocate_unbounded()
|
||||||
|
codecopy(_1, dataoffset(\"D_16_deployed\"), datasize(\"D_16_deployed\"))
|
||||||
|
|
||||||
return(0, datasize(\"D_16_deployed\"))
|
return(_1, datasize(\"D_16_deployed\"))
|
||||||
|
|
||||||
|
function allocate_unbounded() -> memPtr {
|
||||||
|
memPtr := mload(64)
|
||||||
|
}
|
||||||
|
|
||||||
function constructor_D_16() {
|
function constructor_D_16() {
|
||||||
|
|
||||||
@ -163,9 +173,14 @@ object \"D_16\" {
|
|||||||
|
|
||||||
constructor_C_3()
|
constructor_C_3()
|
||||||
|
|
||||||
codecopy(0, dataoffset(\"C_3_deployed\"), datasize(\"C_3_deployed\"))
|
let _1 := allocate_unbounded()
|
||||||
|
codecopy(_1, dataoffset(\"C_3_deployed\"), datasize(\"C_3_deployed\"))
|
||||||
|
|
||||||
return(0, datasize(\"C_3_deployed\"))
|
return(_1, datasize(\"C_3_deployed\"))
|
||||||
|
|
||||||
|
function allocate_unbounded() -> memPtr {
|
||||||
|
memPtr := mload(64)
|
||||||
|
}
|
||||||
|
|
||||||
function constructor_C_3() {
|
function constructor_C_3() {
|
||||||
|
|
||||||
|
@ -14,9 +14,14 @@ object "test_11" {
|
|||||||
|
|
||||||
constructor_test_11()
|
constructor_test_11()
|
||||||
|
|
||||||
codecopy(0, dataoffset("test_11_deployed"), datasize("test_11_deployed"))
|
let _1 := allocate_unbounded()
|
||||||
|
codecopy(_1, dataoffset("test_11_deployed"), datasize("test_11_deployed"))
|
||||||
|
|
||||||
return(0, datasize("test_11_deployed"))
|
return(_1, datasize("test_11_deployed"))
|
||||||
|
|
||||||
|
function allocate_unbounded() -> memPtr {
|
||||||
|
memPtr := mload(64)
|
||||||
|
}
|
||||||
|
|
||||||
function constructor_test_11() {
|
function constructor_test_11() {
|
||||||
|
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
|
|
||||||
======= viair_subobjects/input.sol:C =======
|
======= viair_subobjects/input.sol:C =======
|
||||||
Binary:
|
Binary:
|
||||||
60806040523415600f5760006000fd5b600a80601e600039806000f350fe608060405260006000fd
|
60806040523415600f5760006000fd5b600a80601e608039806080f350fe608060405260006000fd
|
||||||
Binary of the runtime part:
|
Binary of the runtime part:
|
||||||
608060405260006000fd
|
608060405260006000fd
|
||||||
Optimized IR:
|
Optimized IR:
|
||||||
@ -18,8 +18,8 @@ object "C_3" {
|
|||||||
mstore(64, 128)
|
mstore(64, 128)
|
||||||
if callvalue() { revert(0, 0) }
|
if callvalue() { revert(0, 0) }
|
||||||
let _1 := datasize("C_3_deployed")
|
let _1 := datasize("C_3_deployed")
|
||||||
codecopy(0, dataoffset("C_3_deployed"), _1)
|
codecopy(128, dataoffset("C_3_deployed"), _1)
|
||||||
return(0, _1)
|
return(128, _1)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
object "C_3_deployed" {
|
object "C_3_deployed" {
|
||||||
@ -35,9 +35,9 @@ object "C_3" {
|
|||||||
|
|
||||||
======= viair_subobjects/input.sol:D =======
|
======= viair_subobjects/input.sol:D =======
|
||||||
Binary:
|
Binary:
|
||||||
608060405234156100105760006000fd5b60ba80610020600039806000f350fe6080604052600436101515608b576000803560e01c6326121ff0141560895734156027578081fd5b80600319360112156036578081fd5b6028806080016080811067ffffffffffffffff82111715606457634e487b7160e01b83526041600452602483fd5b508061009260803980608083f015156082576040513d83823e3d81fd505b5080604051f35b505b60006000fdfe60806040523415600f5760006000fd5b600a80601e600039806000f350fe608060405260006000fd
|
608060405234156100105760006000fd5b60ba80610020608039806080f350fe6080604052600436101515608b576000803560e01c6326121ff0141560895734156027578081fd5b80600319360112156036578081fd5b6028806080016080811067ffffffffffffffff82111715606457634e487b7160e01b83526041600452602483fd5b508061009260803980608083f015156082576040513d83823e3d81fd505b5080604051f35b505b60006000fdfe60806040523415600f5760006000fd5b600a80601e608039806080f350fe608060405260006000fd
|
||||||
Binary of the runtime part:
|
Binary of the runtime part:
|
||||||
6080604052600436101515608b576000803560e01c6326121ff0141560895734156027578081fd5b80600319360112156036578081fd5b6028806080016080811067ffffffffffffffff82111715606457634e487b7160e01b83526041600452602483fd5b508061009260803980608083f015156082576040513d83823e3d81fd505b5080604051f35b505b60006000fdfe60806040523415600f5760006000fd5b600a80601e600039806000f350fe608060405260006000fd
|
6080604052600436101515608b576000803560e01c6326121ff0141560895734156027578081fd5b80600319360112156036578081fd5b6028806080016080811067ffffffffffffffff82111715606457634e487b7160e01b83526041600452602483fd5b508061009260803980608083f015156082576040513d83823e3d81fd505b5080604051f35b505b60006000fdfe60806040523415600f5760006000fd5b600a80601e608039806080f350fe608060405260006000fd
|
||||||
Optimized IR:
|
Optimized IR:
|
||||||
/*******************************************************
|
/*******************************************************
|
||||||
* WARNING *
|
* WARNING *
|
||||||
@ -52,8 +52,8 @@ object "D_16" {
|
|||||||
mstore(64, 128)
|
mstore(64, 128)
|
||||||
if callvalue() { revert(0, 0) }
|
if callvalue() { revert(0, 0) }
|
||||||
let _1 := datasize("D_16_deployed")
|
let _1 := datasize("D_16_deployed")
|
||||||
codecopy(0, dataoffset("D_16_deployed"), _1)
|
codecopy(128, dataoffset("D_16_deployed"), _1)
|
||||||
return(0, _1)
|
return(128, _1)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
object "D_16_deployed" {
|
object "D_16_deployed" {
|
||||||
@ -94,8 +94,8 @@ object "D_16" {
|
|||||||
mstore(64, 128)
|
mstore(64, 128)
|
||||||
if callvalue() { revert(0, 0) }
|
if callvalue() { revert(0, 0) }
|
||||||
let _1 := datasize("C_3_deployed")
|
let _1 := datasize("C_3_deployed")
|
||||||
codecopy(0, dataoffset("C_3_deployed"), _1)
|
codecopy(128, dataoffset("C_3_deployed"), _1)
|
||||||
return(0, _1)
|
return(128, _1)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
object "C_3_deployed" {
|
object "C_3_deployed" {
|
||||||
|
@ -11,9 +11,12 @@ object "C_7" {
|
|||||||
{
|
{
|
||||||
mstore(64, 128)
|
mstore(64, 128)
|
||||||
if callvalue() { revert(0, 0) }
|
if callvalue() { revert(0, 0) }
|
||||||
codecopy(0, dataoffset("C_7_deployed"), datasize("C_7_deployed"))
|
let _1 := allocate_unbounded()
|
||||||
return(0, datasize("C_7_deployed"))
|
codecopy(_1, dataoffset("C_7_deployed"), datasize("C_7_deployed"))
|
||||||
|
return(_1, datasize("C_7_deployed"))
|
||||||
}
|
}
|
||||||
|
function allocate_unbounded() -> memPtr
|
||||||
|
{ memPtr := mload(64) }
|
||||||
}
|
}
|
||||||
object "C_7_deployed" {
|
object "C_7_deployed" {
|
||||||
code {
|
code {
|
||||||
|
@ -13,9 +13,14 @@ object \"C_11\" {
|
|||||||
|
|
||||||
constructor_C_11()
|
constructor_C_11()
|
||||||
|
|
||||||
codecopy(0, dataoffset(\"C_11_deployed\"), datasize(\"C_11_deployed\"))
|
let _1 := allocate_unbounded()
|
||||||
|
codecopy(_1, dataoffset(\"C_11_deployed\"), datasize(\"C_11_deployed\"))
|
||||||
|
|
||||||
return(0, datasize(\"C_11_deployed\"))
|
return(_1, datasize(\"C_11_deployed\"))
|
||||||
|
|
||||||
|
function allocate_unbounded() -> memPtr {
|
||||||
|
memPtr := mload(64)
|
||||||
|
}
|
||||||
|
|
||||||
function constructor_C_11() {
|
function constructor_C_11() {
|
||||||
|
|
||||||
|
@ -13,9 +13,14 @@ object \"C_11\" {
|
|||||||
|
|
||||||
constructor_C_11()
|
constructor_C_11()
|
||||||
|
|
||||||
codecopy(0, dataoffset(\"C_11_deployed\"), datasize(\"C_11_deployed\"))
|
let _1 := allocate_unbounded()
|
||||||
|
codecopy(_1, dataoffset(\"C_11_deployed\"), datasize(\"C_11_deployed\"))
|
||||||
|
|
||||||
return(0, datasize(\"C_11_deployed\"))
|
return(_1, datasize(\"C_11_deployed\"))
|
||||||
|
|
||||||
|
function allocate_unbounded() -> memPtr {
|
||||||
|
memPtr := mload(64)
|
||||||
|
}
|
||||||
|
|
||||||
function constructor_C_11() {
|
function constructor_C_11() {
|
||||||
|
|
||||||
|
@ -13,9 +13,14 @@ object \"C_11\" {
|
|||||||
|
|
||||||
constructor_C_11()
|
constructor_C_11()
|
||||||
|
|
||||||
codecopy(0, dataoffset(\"C_11_deployed\"), datasize(\"C_11_deployed\"))
|
let _1 := allocate_unbounded()
|
||||||
|
codecopy(_1, dataoffset(\"C_11_deployed\"), datasize(\"C_11_deployed\"))
|
||||||
|
|
||||||
return(0, datasize(\"C_11_deployed\"))
|
return(_1, datasize(\"C_11_deployed\"))
|
||||||
|
|
||||||
|
function allocate_unbounded() -> memPtr {
|
||||||
|
memPtr := mload(64)
|
||||||
|
}
|
||||||
|
|
||||||
function constructor_C_11() {
|
function constructor_C_11() {
|
||||||
|
|
||||||
|
@ -13,9 +13,14 @@ object \"C_11\" {
|
|||||||
|
|
||||||
constructor_C_11()
|
constructor_C_11()
|
||||||
|
|
||||||
codecopy(0, dataoffset(\"C_11_deployed\"), datasize(\"C_11_deployed\"))
|
let _1 := allocate_unbounded()
|
||||||
|
codecopy(_1, dataoffset(\"C_11_deployed\"), datasize(\"C_11_deployed\"))
|
||||||
|
|
||||||
return(0, datasize(\"C_11_deployed\"))
|
return(_1, datasize(\"C_11_deployed\"))
|
||||||
|
|
||||||
|
function allocate_unbounded() -> memPtr {
|
||||||
|
memPtr := mload(64)
|
||||||
|
}
|
||||||
|
|
||||||
function constructor_C_11() {
|
function constructor_C_11() {
|
||||||
|
|
||||||
|
@ -13,9 +13,14 @@ object \"C_11\" {
|
|||||||
|
|
||||||
constructor_C_11()
|
constructor_C_11()
|
||||||
|
|
||||||
codecopy(0, dataoffset(\"C_11_deployed\"), datasize(\"C_11_deployed\"))
|
let _1 := allocate_unbounded()
|
||||||
|
codecopy(_1, dataoffset(\"C_11_deployed\"), datasize(\"C_11_deployed\"))
|
||||||
|
|
||||||
return(0, datasize(\"C_11_deployed\"))
|
return(_1, datasize(\"C_11_deployed\"))
|
||||||
|
|
||||||
|
function allocate_unbounded() -> memPtr {
|
||||||
|
memPtr := mload(64)
|
||||||
|
}
|
||||||
|
|
||||||
function constructor_C_11() {
|
function constructor_C_11() {
|
||||||
|
|
||||||
|
@ -30,6 +30,6 @@ contract C is B {
|
|||||||
// compileViaYul: also
|
// compileViaYul: also
|
||||||
// ----
|
// ----
|
||||||
// test() -> 77
|
// test() -> 77
|
||||||
// gas irOptimized: 133623
|
// gas irOptimized: 133635
|
||||||
// gas legacy: 156573
|
// gas legacy: 156573
|
||||||
// gas legacyOptimized: 112940
|
// gas legacyOptimized: 112940
|
||||||
|
@ -38,5 +38,5 @@ contract C is B {
|
|||||||
// compileViaYul: also
|
// compileViaYul: also
|
||||||
// ----
|
// ----
|
||||||
// test() -> 5, 10
|
// test() -> 5, 10
|
||||||
// gas irOptimized: 92612
|
// gas irOptimized: 92624
|
||||||
// gas legacy: 100441
|
// gas legacy: 100441
|
||||||
|
@ -21,6 +21,6 @@ contract B {
|
|||||||
// compileViaYul: also
|
// compileViaYul: also
|
||||||
// ----
|
// ----
|
||||||
// f() -> 2, 3, 4, 5, 6, 1000, 1001, 1002, 1003, 1004
|
// f() -> 2, 3, 4, 5, 6, 1000, 1001, 1002, 1003, 1004
|
||||||
// gas irOptimized: 135871
|
// gas irOptimized: 135883
|
||||||
// gas legacy: 264410
|
// gas legacy: 264410
|
||||||
// gas legacyOptimized: 135699
|
// gas legacyOptimized: 135699
|
||||||
|
@ -45,6 +45,6 @@ contract C {
|
|||||||
// compileViaYul: also
|
// compileViaYul: also
|
||||||
// ----
|
// ----
|
||||||
// test() -> 5, 6, 7
|
// test() -> 5, 6, 7
|
||||||
// gas irOptimized: 345942
|
// gas irOptimized: 345955
|
||||||
// gas legacy: 500424
|
// gas legacy: 500424
|
||||||
// gas legacyOptimized: 309013
|
// gas legacyOptimized: 309013
|
||||||
|
@ -26,6 +26,6 @@ contract Main {
|
|||||||
// compileViaYul: also
|
// compileViaYul: also
|
||||||
// ----
|
// ----
|
||||||
// f(uint256): 0x34 -> 0x46bddb1178e94d7f2892ff5f366840eb658911794f2c3a44c450aa2c505186c1
|
// f(uint256): 0x34 -> 0x46bddb1178e94d7f2892ff5f366840eb658911794f2c3a44c450aa2c505186c1
|
||||||
// gas irOptimized: 115528
|
// gas irOptimized: 115543
|
||||||
// gas legacy: 127152
|
// gas legacy: 127152
|
||||||
// gas legacyOptimized: 113679
|
// gas legacyOptimized: 113679
|
||||||
|
@ -26,6 +26,6 @@ contract Creator {
|
|||||||
// compileViaYul: also
|
// compileViaYul: also
|
||||||
// ----
|
// ----
|
||||||
// f(uint256,address[]): 7, 0x40, 10, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 -> 7, 8
|
// f(uint256,address[]): 7, 0x40, 10, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 -> 7, 8
|
||||||
// gas irOptimized: 474619
|
// gas irOptimized: 474718
|
||||||
// gas legacy: 570900
|
// gas legacy: 570900
|
||||||
// gas legacyOptimized: 436724
|
// gas legacyOptimized: 436724
|
||||||
|
@ -26,6 +26,6 @@ contract Creator {
|
|||||||
// compileViaYul: also
|
// compileViaYul: also
|
||||||
// ----
|
// ----
|
||||||
// f(uint256,bytes): 7, 0x40, 78, "abcdefghijklmnopqrstuvwxyzabcdef", "ghijklmnopqrstuvwxyzabcdefghijkl", "mnopqrstuvwxyz" -> 7, "h"
|
// f(uint256,bytes): 7, 0x40, 78, "abcdefghijklmnopqrstuvwxyzabcdef", "ghijklmnopqrstuvwxyzabcdefghijkl", "mnopqrstuvwxyz" -> 7, "h"
|
||||||
// gas irOptimized: 330923
|
// gas irOptimized: 330976
|
||||||
// gas legacy: 414850
|
// gas legacy: 414850
|
||||||
// gas legacyOptimized: 292281
|
// gas legacyOptimized: 292281
|
||||||
|
@ -19,6 +19,6 @@ contract C {
|
|||||||
// compileViaYul: also
|
// compileViaYul: also
|
||||||
// ----
|
// ----
|
||||||
// f(), 2000 ether -> true
|
// f(), 2000 ether -> true
|
||||||
// gas irOptimized: 123725
|
// gas irOptimized: 123743
|
||||||
// gas legacy: 123226
|
// gas legacy: 123226
|
||||||
// gas legacyOptimized: 123092
|
// gas legacyOptimized: 123092
|
||||||
|
@ -28,6 +28,6 @@ contract C {
|
|||||||
// compileViaYul: also
|
// compileViaYul: also
|
||||||
// ----
|
// ----
|
||||||
// t() -> 9
|
// t() -> 9
|
||||||
// gas irOptimized: 103941
|
// gas irOptimized: 103953
|
||||||
// gas legacy: 161097
|
// gas legacy: 161097
|
||||||
// gas legacyOptimized: 112116
|
// gas legacyOptimized: 112116
|
||||||
|
@ -29,7 +29,7 @@ contract C {
|
|||||||
// compileViaYul: also
|
// compileViaYul: also
|
||||||
// ----
|
// ----
|
||||||
// f() -> 3, 7, 5
|
// f() -> 3, 7, 5
|
||||||
// gas irOptimized: 131350
|
// gas irOptimized: 131380
|
||||||
// gas legacy: 153990
|
// gas legacy: 153990
|
||||||
// gas legacyOptimized: 127822
|
// gas legacyOptimized: 127822
|
||||||
// x() -> 7
|
// x() -> 7
|
||||||
|
@ -23,8 +23,8 @@ contract D {
|
|||||||
// compileViaYul: also
|
// compileViaYul: also
|
||||||
// ----
|
// ----
|
||||||
// f() -> 1
|
// f() -> 1
|
||||||
// gas irOptimized: 86492
|
// gas irOptimized: 86504
|
||||||
// gas legacy: 114412
|
// gas legacy: 114412
|
||||||
// g() -> 5
|
// g() -> 5
|
||||||
// gas irOptimized: 86588
|
// gas irOptimized: 86600
|
||||||
// gas legacy: 114872
|
// gas legacy: 114872
|
||||||
|
@ -25,5 +25,5 @@ contract B {
|
|||||||
// compileViaYul: also
|
// compileViaYul: also
|
||||||
// ----
|
// ----
|
||||||
// g() -> 42
|
// g() -> 42
|
||||||
// gas irOptimized: 90623
|
// gas irOptimized: 90635
|
||||||
// gas legacy: 117797
|
// gas legacy: 117797
|
||||||
|
@ -25,6 +25,6 @@ contract B {
|
|||||||
// compileViaYul: also
|
// compileViaYul: also
|
||||||
// ----
|
// ----
|
||||||
// g() -> 42
|
// g() -> 42
|
||||||
// gas irOptimized: 119646
|
// gas irOptimized: 119658
|
||||||
// gas legacy: 180597
|
// gas legacy: 180597
|
||||||
// gas legacyOptimized: 117351
|
// gas legacyOptimized: 117351
|
||||||
|
@ -37,10 +37,10 @@ contract C {
|
|||||||
// compileViaYul: also
|
// compileViaYul: also
|
||||||
// ----
|
// ----
|
||||||
// convertParent() -> 1
|
// convertParent() -> 1
|
||||||
// gas irOptimized: 103625
|
// gas irOptimized: 103637
|
||||||
// convertSubA() -> 1, 2
|
// convertSubA() -> 1, 2
|
||||||
// gas irOptimized: 105708
|
// gas irOptimized: 105720
|
||||||
// gas legacy: 101703
|
// gas legacy: 101703
|
||||||
// convertSubB() -> 1, 3
|
// convertSubB() -> 1, 3
|
||||||
// gas irOptimized: 105642
|
// gas irOptimized: 105654
|
||||||
// gas legacy: 101637
|
// gas legacy: 101637
|
||||||
|
@ -22,6 +22,6 @@ contract A {
|
|||||||
// compileViaYul: also
|
// compileViaYul: also
|
||||||
// ----
|
// ----
|
||||||
// f(), 10 ether -> 3007, 3008, 3009
|
// f(), 10 ether -> 3007, 3008, 3009
|
||||||
// gas irOptimized: 294216
|
// gas irOptimized: 294279
|
||||||
// gas legacy: 422027
|
// gas legacy: 422027
|
||||||
// gas legacyOptimized: 287256
|
// gas legacyOptimized: 287256
|
||||||
|
Loading…
Reference in New Issue
Block a user