From f9e57dd642dc8a19582e5e325ee11c25322ac89e Mon Sep 17 00:00:00 2001 From: Daniel Kirchner Date: Fri, 13 Aug 2021 00:24:12 +0200 Subject: [PATCH] Test updates. --- test/cmdlineTests/exp_base_literal/output | 4 +- test/cmdlineTests/function_debug_info/output | 4 +- .../output | 22 +- .../ir_compiler_subobjects/output | 61 +- .../output | 13 +- .../output | 9 +- .../keccak_optimization_low_runs/output | 9 +- test/cmdlineTests/name_simplifier/output | 11 +- test/cmdlineTests/object_compiler/output | 4 +- .../cmdlineTests/optimizer_array_sload/output | 11 +- .../output | 30 +- .../output | 30 +- test/cmdlineTests/revert_strings/output | 4 +- .../standard_ewasm_requested/output.json | 18 +- .../output.json | 4 +- .../standard_ir_requested/output.json | 4 +- .../standard_viair_requested/output.json | 12 +- .../standard_yul_optimiserSteps/output.json | 3 +- .../standard_yul_optimized/output.json | 1 + .../standard_yul_stack_opt/output.json | 5 +- .../strict_asm_optimizer_steps/output | 23 +- test/cmdlineTests/viair_abicoder_v1/output | 4 +- test/cmdlineTests/viair_subobjects/output | 61 +- test/cmdlineTests/yul_optimize_runs/output | 6 +- test/cmdlineTests/yul_optimizer_steps/output | 4 +- .../yul_source_locations/output.json | 8 +- .../yul_source_locations_in_asm/output.json | 1124 +++++++++-------- .../yul_string_format_ascii/output.json | 4 +- .../output.json | 4 +- .../output.json | 4 +- .../yul_string_format_ascii_long/output.json | 4 +- .../yul_string_format_hex/output.json | 4 +- test/cmdlineTests/yul_verbatim_msize/output | 3 +- test/libsolidity/gasTests/abiv2_optimised.sol | 10 +- .../gasTests/dispatch_large_optimised.sol | 46 +- .../gasTests/dispatch_medium_optimised.sol | 20 +- .../gasTests/dispatch_small_optimised.sol | 8 +- test/libsolidity/gasTests/exp_optimized.sol | 12 +- test/libsolidity/gasTests/storage_costs.sol | 6 +- .../abiEncoderV1/abi_decode_v2_storage.sol | 4 +- .../abi_encode_calldata_slice.sol | 8 +- .../struct/struct_storage_ptr.sol | 4 +- .../abi_encode_calldata_slice.sol | 8 +- .../abiEncoderV2/abi_encode_v2.sol | 4 +- ...2_in_function_inherited_in_v1_contract.sol | 4 +- ...ode_v2_in_modifier_used_in_v1_contract.sol | 2 +- .../abiEncoderV2/calldata_array.sol | 4 +- .../abiEncoderV2/storage_array_encoding.sol | 8 +- .../abi_decode_simple_storage.sol | 4 +- .../arrays_complex_from_and_to_storage.sol | 4 +- .../array/byte_array_storage_layout.sol | 8 +- .../array/byte_array_transitional_2.sol | 4 +- .../array/bytes_length_member.sol | 4 +- .../copying/array_copy_calldata_storage.sol | 4 +- .../copying/array_copy_cleanup_uint128.sol | 2 +- .../copying/array_copy_cleanup_uint40.sol | 2 +- .../copying/array_copy_clear_storage.sol | 2 +- .../array_copy_clear_storage_packed.sol | 4 +- .../copying/array_copy_different_packing.sol | 4 +- .../copying/array_copy_including_array.sol | 8 +- .../array/copying/array_copy_nested_array.sol | 4 +- ...ay_copy_storage_storage_different_base.sol | 2 +- ..._storage_storage_different_base_nested.sol | 2 +- .../array_copy_storage_storage_dyn_dyn.sol | 2 +- ...y_copy_storage_storage_dynamic_dynamic.sol | 2 +- ...ay_copy_storage_storage_static_dynamic.sol | 2 +- ...ray_copy_storage_storage_static_simple.sol | 2 +- ...ray_copy_storage_storage_static_static.sol | 2 +- .../array_copy_storage_storage_struct.sol | 2 +- .../array_copy_storage_to_memory_nested.sol | 4 +- .../copying/array_copy_target_leftover.sol | 4 +- .../copying/array_copy_target_leftover2.sol | 4 +- .../copying/array_copy_target_simple.sol | 4 +- .../copying/array_copy_target_simple_2.sol | 4 +- .../array_nested_calldata_to_storage.sol | 8 +- .../array_nested_memory_to_storage.sol | 8 +- .../array_of_struct_calldata_to_storage.sol | 2 +- .../array_of_struct_memory_to_storage.sol | 2 +- ..._containing_arrays_calldata_to_storage.sol | 2 +- ...ts_containing_arrays_memory_to_storage.sol | 2 +- .../array_storage_multi_items_per_slot.sol | 2 +- .../copying/arrays_from_and_to_storage.sol | 4 +- .../array/copying/bytes_inside_mappings.sol | 8 +- .../copying/bytes_storage_to_storage.sol | 22 +- .../calldata_array_dynamic_to_storage.sol | 4 +- .../copy_byte_array_in_struct_to_storage.sol | 8 +- .../copying/copy_byte_array_to_storage.sol | 4 +- .../copying/copy_function_storage_array.sol | 2 +- .../array/copying/copy_removes_bytes_data.sol | 4 +- .../memory_dyn_2d_bytes_to_storage.sol | 4 +- .../array/copying/storage_memory_nested.sol | 4 +- .../copying/storage_memory_nested_bytes.sol | 4 +- .../storage_memory_nested_from_pointer.sol | 4 +- .../copying/storage_memory_nested_struct.sol | 2 +- .../copying/storage_memory_packed_dyn.sol | 4 +- .../array/create_memory_array.sol | 2 +- .../array/delete/bytes_delete_element.sol | 4 +- .../delete/delete_storage_array_packed.sol | 2 +- .../array/dynamic_array_cleanup.sol | 4 +- .../array/dynamic_arrays_in_storage.sol | 4 +- .../array/dynamic_multi_array_cleanup.sol | 2 +- .../array/fixed_array_cleanup.sol | 4 +- .../array/fixed_arrays_as_return_type.sol | 4 +- .../array/function_array_cross_calls.sol | 4 +- .../array/pop/array_pop_array_transition.sol | 4 +- .../array/pop/array_pop_uint16_transition.sol | 4 +- .../array/pop/array_pop_uint24_transition.sol | 4 +- .../array/pop/byte_array_pop_copy_long.sol | 4 +- .../pop/byte_array_pop_long_storage_empty.sol | 4 +- ...ray_pop_long_storage_empty_garbage_ref.sol | 4 +- .../array/pop/byte_array_pop_masking_long.sol | 4 +- .../semanticTests/array/push/array_push.sol | 2 +- .../push/array_push_nested_from_calldata.sol | 4 +- .../array/push/array_push_packed_array.sol | 2 +- .../array/push/array_push_struct.sol | 2 +- .../push/array_push_struct_from_calldata.sol | 4 +- .../array/push/byte_array_push_transition.sol | 4 +- .../array/push/nested_bytes_push.sol | 4 +- .../array/push/push_no_args_2d.sol | 8 +- .../array/push/push_no_args_bytes.sol | 4 +- .../semanticTests/array/reusing_memory.sol | 4 +- .../constructor/arrays_in_constructors.sol | 4 +- .../bytes_in_constructors_packer.sol | 4 +- .../constructor/no_callvalue_check.sol | 2 +- .../events/event_dynamic_array_storage.sol | 4 +- .../events/event_dynamic_array_storage_v2.sol | 4 +- .../event_dynamic_nested_array_storage_v2.sol | 4 +- .../events/event_indexed_mixed.sol | 4 +- .../events/event_indexed_string.sol | 4 +- .../externalContracts/FixedFeeRegistrar.sol | 8 +- .../externalContracts/deposit_contract.sol | 20 +- .../externalContracts/prbmath_signed.sol | 44 +- .../externalContracts/prbmath_unsigned.sol | 44 +- .../externalContracts/ramanujan_pi.sol | 8 +- .../semanticTests/externalContracts/snark.sol | 4 +- .../externalContracts/strings.sol | 24 +- .../functionCall/failed_create.sol | 8 +- .../mapping_array_internal_argument.sol | 4 +- .../functionTypes/store_function.sol | 4 +- .../immutable/multi_creation.sol | 4 +- .../address_overload_resolution.sol | 4 +- ...d_function_calldata_calldata_interface.sol | 2 +- ...ted_function_calldata_memory_interface.sol | 4 +- .../keccak_yul_optimization.sol | 4 +- .../interface_inheritance_conversions.sol | 6 +- .../salted_create/salted_create.sol | 2 +- .../salted_create_with_value.sol | 4 +- .../storage/packed_storage_structs_bytes.sol | 2 +- ...ta_struct_with_nested_array_to_storage.sol | 4 +- .../conversion/recursive_storage_memory.sol | 2 +- .../structs/memory_structs_nested_load.sol | 2 +- ...truct_containing_bytes_copy_and_delete.sol | 4 +- .../semanticTests/structs/struct_copy.sol | 8 +- .../structs/struct_copy_via_local.sol | 2 +- .../struct_delete_storage_nested_small.sol | 2 +- .../struct_delete_storage_with_array.sol | 2 +- ...truct_delete_storage_with_arrays_small.sol | 2 +- .../struct_memory_to_storage_function_ptr.sol | 2 +- .../semanticTests/structs/structs.sol | 2 +- .../various/destructuring_assignment.sol | 4 +- .../semanticTests/various/erc20.sol | 26 +- .../skip_dynamic_types_for_structs.sol | 4 +- .../various/staticcall_for_view_and_pure.sol | 4 +- .../various/swap_in_storage_overwrite.sol | 2 +- .../viaYul/array_memory_index_access.sol | 4 +- .../viaYul/array_storage_index_access.sol | 30 +- .../array_storage_index_boundary_test.sol | 8 +- .../array_storage_index_zeroed_test.sol | 16 +- .../viaYul/array_storage_length_access.sol | 8 +- .../viaYul/array_storage_push_empty.sol | 8 +- ...rray_storage_push_empty_length_address.sol | 12 +- .../viaYul/array_storage_push_pop.sol | 12 +- .../objectCompiler/long_object_name.yul | 8 +- .../objectCompiler/nested_optimizer.yul | 8 +- .../objectCompiler/simple_optimizer.yul | 7 +- .../yulOptimizerTests/fullSuite/aztec.yul | 89 +- .../fullSuite/stack_compressor_msize.yul | 29 +- .../stackCompressor/inlineInBlock.yul | 2 + .../stackCompressor/inlineInFunction.yul | 2 + .../stackCompressor/unusedPrunerWithMSize.yul | 2 + 180 files changed, 1278 insertions(+), 1219 deletions(-) diff --git a/test/cmdlineTests/exp_base_literal/output b/test/cmdlineTests/exp_base_literal/output index b7aaea4ba..7b25a6ece 100644 --- a/test/cmdlineTests/exp_base_literal/output +++ b/test/cmdlineTests/exp_base_literal/output @@ -11,7 +11,7 @@ IR: object "C_81" { code { /// @src 0:82:370 - mstore(64, 128) + mstore(64, memoryguard(128)) if callvalue() { revert_error_ca66f745a3ce8ff40e2ccaf1ad45db7774001b90d25810abd9040049be7bf4bb() } constructor_C_81() @@ -41,7 +41,7 @@ object "C_81" { object "C_81_deployed" { code { /// @src 0:82:370 - mstore(64, 128) + mstore(64, memoryguard(128)) if iszero(lt(calldatasize(), 4)) { diff --git a/test/cmdlineTests/function_debug_info/output b/test/cmdlineTests/function_debug_info/output index 071e0076e..8289020c2 100644 --- a/test/cmdlineTests/function_debug_info/output +++ b/test/cmdlineTests/function_debug_info/output @@ -41,7 +41,7 @@ }, "abi_decode_tuple_t_uint256": { - "entryPoint": 281, + "entryPoint": 265, "parameterSlots": 2, "returnSlots": 1 }, @@ -52,7 +52,7 @@ }, "panic_error_0x32": { - "entryPoint": 306, + "entryPoint": 287, "parameterSlots": 0, "returnSlots": 0 } diff --git a/test/cmdlineTests/ir_compiler_inheritance_nosubobjects/output b/test/cmdlineTests/ir_compiler_inheritance_nosubobjects/output index 1af925406..69c6ff024 100644 --- a/test/cmdlineTests/ir_compiler_inheritance_nosubobjects/output +++ b/test/cmdlineTests/ir_compiler_inheritance_nosubobjects/output @@ -11,18 +11,19 @@ object "C_7" { code { { /// @src 0:82:117 - 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) } } object "C_7_deployed" { code { { /// @src 0:82:117 - mstore(64, 128) + mstore(64, memoryguard(0x80)) revert(0, 0) } } @@ -43,18 +44,19 @@ object "D_10" { code { { /// @src 0:118:137 - 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) } } object "D_10_deployed" { code { { /// @src 0:118:137 - mstore(64, 128) + mstore(64, memoryguard(0x80)) revert(0, 0) } } diff --git a/test/cmdlineTests/ir_compiler_subobjects/output b/test/cmdlineTests/ir_compiler_subobjects/output index ba93e6886..d426956d6 100644 --- a/test/cmdlineTests/ir_compiler_subobjects/output +++ b/test/cmdlineTests/ir_compiler_subobjects/output @@ -11,18 +11,19 @@ object "C_3" { code { { /// @src 0:82:95 - 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) } } object "C_3_deployed" { code { { /// @src 0:82:95 - mstore(64, 128) + mstore(64, memoryguard(0x80)) revert(0, 0) } } @@ -43,46 +44,47 @@ object "D_16" { code { { /// @src 0:96:165 - 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) } } object "D_16_deployed" { code { { /// @src 0:96:165 - 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 - let _2 := datasize("C_3") - let _3 := add(/** @src 0:96:165 */ 128, /** @src 0:149:156 */ _2) - if or(gt(_3, 0xffffffffffffffff), lt(_3, /** @src 0:96:165 */ 128)) + if callvalue() { revert(_2, _2) } + if slt(add(calldatasize(), not(3)), _2) { revert(_2, _2) } /// @src 0:149:156 + let _3 := datasize("C_3") + let _4 := add(_1, _3) + if or(gt(_4, 0xffffffffffffffff), lt(_4, _1)) { /// @src 0:96:165 - mstore(_1, shl(224, 0x4e487b71)) + mstore(_2, shl(224, 0x4e487b71)) mstore(4, 0x41) - revert(_1, 0x24) + revert(_2, 0x24) } /// @src 0:149:156 - datacopy(/** @src 0:96:165 */ 128, /** @src 0:149:156 */ dataoffset("C_3"), _2) - if iszero(create(/** @src 0:96:165 */ _1, 128, /** @src 0:149:156 */ _2)) + datacopy(_1, dataoffset("C_3"), _3) + if iszero(create(/** @src 0:96:165 */ _2, /** @src 0:149:156 */ _1, sub(_4, _1))) { /// @src 0:96:165 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) @@ -92,18 +94,19 @@ object "D_16" { code { { /// @src 0:82:95 - 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) } } object "C_3_deployed" { code { { /// @src 0:82:95 - mstore(64, 128) + mstore(64, memoryguard(0x80)) revert(0, 0) } } diff --git a/test/cmdlineTests/ir_with_assembly_no_memoryguard_creation/output b/test/cmdlineTests/ir_with_assembly_no_memoryguard_creation/output index 89ee1b5d9..a49251b7d 100644 --- a/test/cmdlineTests/ir_with_assembly_no_memoryguard_creation/output +++ b/test/cmdlineTests/ir_with_assembly_no_memoryguard_creation/output @@ -22,15 +22,16 @@ object "D_12" { code { { /// @src 0:82:161 - 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) diff --git a/test/cmdlineTests/ir_with_assembly_no_memoryguard_runtime/output b/test/cmdlineTests/ir_with_assembly_no_memoryguard_runtime/output index 1fcf2fcc8..f6077d38a 100644 --- a/test/cmdlineTests/ir_with_assembly_no_memoryguard_runtime/output +++ b/test/cmdlineTests/ir_with_assembly_no_memoryguard_runtime/output @@ -11,11 +11,12 @@ object "D_8" { code { { /// @src 0:82:153 - 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) } } object "D_8_deployed" { diff --git a/test/cmdlineTests/keccak_optimization_low_runs/output b/test/cmdlineTests/keccak_optimization_low_runs/output index 203600cfa..869c2d780 100644 --- a/test/cmdlineTests/keccak_optimization_low_runs/output +++ b/test/cmdlineTests/keccak_optimization_low_runs/output @@ -11,11 +11,12 @@ object "C_7" { code { { /// @src 0:62:285 - 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) } } object "C_7_deployed" { diff --git a/test/cmdlineTests/name_simplifier/output b/test/cmdlineTests/name_simplifier/output index 7d0fba09f..5fc6fce48 100644 --- a/test/cmdlineTests/name_simplifier/output +++ b/test/cmdlineTests/name_simplifier/output @@ -11,18 +11,19 @@ object "C_59" { code { { /// @src 0:346:625 - 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) } } object "C_59_deployed" { code { { /// @src 0:346:625 - mstore(64, 128) + mstore(64, memoryguard(0x80)) if iszero(lt(calldatasize(), 4)) { let _1 := 0 diff --git a/test/cmdlineTests/object_compiler/output b/test/cmdlineTests/object_compiler/output index eb8a3286e..acc25c6a0 100644 --- a/test/cmdlineTests/object_compiler/output +++ b/test/cmdlineTests/object_compiler/output @@ -23,7 +23,7 @@ object "MyContract" { Binary representation: -33600055600b806011600039806000f3fe60005460005260206000f3 +33600055600b8060106000396000f3fe60005460005260206000f3 Text representation: /* "object_compiler/input.yul":128:136 */ @@ -41,8 +41,6 @@ Text representation: 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 */ diff --git a/test/cmdlineTests/optimizer_array_sload/output b/test/cmdlineTests/optimizer_array_sload/output index 36dc23663..836ade886 100644 --- a/test/cmdlineTests/optimizer_array_sload/output +++ b/test/cmdlineTests/optimizer_array_sload/output @@ -11,18 +11,19 @@ object "Arraysum_34" { code { { /// @src 0:80:429 - 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) } } object "Arraysum_34_deployed" { code { { /// @src 0:80:429 - mstore(64, 128) + mstore(64, memoryguard(0x80)) if iszero(lt(calldatasize(), 4)) { let _1 := 0 diff --git a/test/cmdlineTests/optimizer_inliner_dynamic_reference/output b/test/cmdlineTests/optimizer_inliner_dynamic_reference/output index ba32c364b..97f4e496b 100644 --- a/test/cmdlineTests/optimizer_inliner_dynamic_reference/output +++ b/test/cmdlineTests/optimizer_inliner_dynamic_reference/output @@ -152,20 +152,23 @@ sub_0: assembly { jump // out /* "#utility.yul":196:421 */ tag_22: - /* "#utility.yul":236:239 */ - 0x00 - /* "#utility.yul":267:268 */ - dup3 + dup2 /* "#utility.yul":263:269 */ not - /* "#utility.yul":260:261 */ - dup3 + dup2 /* "#utility.yul":257:270 */ gt - /* "#utility.yul":254:390 */ - iszero - tag_30 + tag_27 jumpi + /* "#utility.yul":406:415 */ + add + swap1 + /* "#utility.yul":196:421 */ + jump // out + tag_27: + pop + pop + pop /* "#utility.yul":312:322 */ 0x4e487b71 /* "#utility.yul":307:310 */ @@ -188,16 +191,9 @@ sub_0: assembly { 0x00 /* "#utility.yul":365:380 */ revert - /* "#utility.yul":254:390 */ - tag_30: - pop - /* "#utility.yul":406:415 */ - add - swap1 - /* "#utility.yul":196:421 */ - jump // out /* "#utility.yul":426:553 */ tag_26: + pop /* "#utility.yul":487:497 */ 0x4e487b71 /* "#utility.yul":482:485 */ diff --git a/test/cmdlineTests/optimizer_inliner_dynamic_reference_constructor/output b/test/cmdlineTests/optimizer_inliner_dynamic_reference_constructor/output index 83f06edad..46bf97a5e 100644 --- a/test/cmdlineTests/optimizer_inliner_dynamic_reference_constructor/output +++ b/test/cmdlineTests/optimizer_inliner_dynamic_reference_constructor/output @@ -157,20 +157,23 @@ sub_0: assembly { jump // out /* "#utility.yul":196:421 */ tag_19: - /* "#utility.yul":236:239 */ - 0x00 - /* "#utility.yul":267:268 */ - dup3 + dup2 /* "#utility.yul":263:269 */ not - /* "#utility.yul":260:261 */ - dup3 + dup2 /* "#utility.yul":257:270 */ gt - /* "#utility.yul":254:390 */ - iszero - tag_26 + tag_23 jumpi + /* "#utility.yul":406:415 */ + add + swap1 + /* "#utility.yul":196:421 */ + jump // out + tag_23: + pop + pop + pop /* "#utility.yul":312:322 */ 0x4e487b71 /* "#utility.yul":307:310 */ @@ -193,16 +196,9 @@ sub_0: assembly { 0x00 /* "#utility.yul":365:380 */ revert - /* "#utility.yul":254:390 */ - tag_26: - pop - /* "#utility.yul":406:415 */ - add - swap1 - /* "#utility.yul":196:421 */ - jump // out /* "#utility.yul":426:553 */ tag_22: + pop /* "#utility.yul":487:497 */ 0x4e487b71 /* "#utility.yul":482:485 */ diff --git a/test/cmdlineTests/revert_strings/output b/test/cmdlineTests/revert_strings/output index 6fa650eb1..a28d334f7 100644 --- a/test/cmdlineTests/revert_strings/output +++ b/test/cmdlineTests/revert_strings/output @@ -11,7 +11,7 @@ IR: object "C_15" { code { /// @src 0:59:147 - mstore(64, 128) + mstore(64, memoryguard(128)) if callvalue() { revert_error_ca66f745a3ce8ff40e2ccaf1ad45db7774001b90d25810abd9040049be7bf4bb() } constructor_C_15() @@ -56,7 +56,7 @@ object "C_15" { object "C_15_deployed" { code { /// @src 0:59:147 - mstore(64, 128) + mstore(64, memoryguard(128)) if iszero(lt(calldatasize(), 4)) { diff --git a/test/cmdlineTests/standard_ewasm_requested/output.json b/test/cmdlineTests/standard_ewasm_requested/output.json index c70693bc6..a8ab1fd0b 100644 --- a/test/cmdlineTests/standard_ewasm_requested/output.json +++ b/test/cmdlineTests/standard_ewasm_requested/output.json @@ -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) diff --git a/test/cmdlineTests/standard_irOptimized_requested/output.json b/test/cmdlineTests/standard_irOptimized_requested/output.json index 8b9ada71a..32ed582b4 100644 --- a/test/cmdlineTests/standard_irOptimized_requested/output.json +++ b/test/cmdlineTests/standard_irOptimized_requested/output.json @@ -9,7 +9,7 @@ object \"C_7\" { code { /// @src 0:79:121 - mstore(64, 128) + mstore(64, memoryguard(128)) if callvalue() { revert_error_ca66f745a3ce8ff40e2ccaf1ad45db7774001b90d25810abd9040049be7bf4bb() @@ -28,7 +28,7 @@ object \"C_7\" { object \"C_7_deployed\" { code { /// @src 0:79:121 - mstore(64, 128) + mstore(64, memoryguard(128)) if iszero(lt(calldatasize(), 4)) { let selector := shift_right_224_unsigned(calldataload(0)) diff --git a/test/cmdlineTests/standard_ir_requested/output.json b/test/cmdlineTests/standard_ir_requested/output.json index 2eb815d33..be2f9efe5 100644 --- a/test/cmdlineTests/standard_ir_requested/output.json +++ b/test/cmdlineTests/standard_ir_requested/output.json @@ -10,7 +10,7 @@ object \"C_7\" { code { /// @src 0:79:121 - mstore(64, 128) + mstore(64, memoryguard(128)) if callvalue() { revert_error_ca66f745a3ce8ff40e2ccaf1ad45db7774001b90d25810abd9040049be7bf4bb() } constructor_C_7() @@ -40,7 +40,7 @@ object \"C_7\" { object \"C_7_deployed\" { code { /// @src 0:79:121 - mstore(64, 128) + mstore(64, memoryguard(128)) if iszero(lt(calldatasize(), 4)) { diff --git a/test/cmdlineTests/standard_viair_requested/output.json b/test/cmdlineTests/standard_viair_requested/output.json index dca052187..3ef7c6ebb 100644 --- a/test/cmdlineTests/standard_viair_requested/output.json +++ b/test/cmdlineTests/standard_viair_requested/output.json @@ -10,7 +10,7 @@ object \"C_3\" { code { /// @src 0:79:92 - mstore(64, 128) + mstore(64, memoryguard(128)) if callvalue() { revert_error_ca66f745a3ce8ff40e2ccaf1ad45db7774001b90d25810abd9040049be7bf4bb() } constructor_C_3() @@ -40,7 +40,7 @@ object \"C_3\" { object \"C_3_deployed\" { code { /// @src 0:79:92 - mstore(64, 128) + mstore(64, memoryguard(128)) if iszero(lt(calldatasize(), 4)) { @@ -86,7 +86,7 @@ object \"C_3\" { object \"D_16\" { code { /// @src 0:93:146 - mstore(64, 128) + mstore(64, memoryguard(128)) if callvalue() { revert_error_ca66f745a3ce8ff40e2ccaf1ad45db7774001b90d25810abd9040049be7bf4bb() } constructor_D_16() @@ -116,7 +116,7 @@ object \"D_16\" { object \"D_16_deployed\" { code { /// @src 0:93:146 - mstore(64, 128) + mstore(64, memoryguard(128)) if iszero(lt(calldatasize(), 4)) { @@ -217,7 +217,7 @@ object \"D_16\" { object \"C_3\" { code { /// @src 0:79:92 - mstore(64, 128) + mstore(64, memoryguard(128)) if callvalue() { revert_error_ca66f745a3ce8ff40e2ccaf1ad45db7774001b90d25810abd9040049be7bf4bb() } constructor_C_3() @@ -247,7 +247,7 @@ object \"D_16\" { object \"C_3_deployed\" { code { /// @src 0:79:92 - mstore(64, 128) + mstore(64, memoryguard(128)) if iszero(lt(calldatasize(), 4)) { diff --git a/test/cmdlineTests/standard_yul_optimiserSteps/output.json b/test/cmdlineTests/standard_yul_optimiserSteps/output.json index 3caeed8db..1306ef6ae 100644 --- a/test/cmdlineTests/standard_yul_optimiserSteps/output.json +++ b/test/cmdlineTests/standard_yul_optimiserSteps/output.json @@ -1,10 +1,11 @@ -{"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 + stop ","bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""}},"ir":"object \"object\" { code { let x := mload(0) diff --git a/test/cmdlineTests/standard_yul_optimized/output.json b/test/cmdlineTests/standard_yul_optimized/output.json index a5217c672..fc59275ff 100644 --- a/test/cmdlineTests/standard_yul_optimized/output.json +++ b/test/cmdlineTests/standard_yul_optimized/output.json @@ -5,6 +5,7 @@ mload /* \"A\":20:40 */ sstore + stop ","bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""}},"ir":"object \"object\" { code { let x := mload(0) diff --git a/test/cmdlineTests/standard_yul_stack_opt/output.json b/test/cmdlineTests/standard_yul_stack_opt/output.json index 0fd77310e..9b7d4ffec 100644 --- a/test/cmdlineTests/standard_yul_stack_opt/output.json +++ b/test/cmdlineTests/standard_yul_stack_opt/output.json @@ -1,17 +1,14 @@ {"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 + 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"}]} diff --git a/test/cmdlineTests/strict_asm_optimizer_steps/output b/test/cmdlineTests/strict_asm_optimizer_steps/output index bf9f34e7a..16f8e9c7f 100644 --- a/test/cmdlineTests/strict_asm_optimizer_steps/output +++ b/test/cmdlineTests/strict_asm_optimizer_steps/output @@ -25,7 +25,7 @@ object "C_6" { Binary representation: -60806040523415600e57600080fd5b600e601c600039600e6000f3fe60806040523615600055600080fd +608060405234601557600e601b600039600e6000f35b600080fdfe60806040523615600055600080fd Text representation: /* "strict_asm_optimizer_steps/input.yul":45:48 */ @@ -35,19 +35,7 @@ Text representation: /* "strict_asm_optimizer_steps/input.yul":34:49 */ mstore /* "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: + jumpi(tag_1, callvalue) /* "strict_asm_optimizer_steps/input.yul":138:162 */ dataSize(sub_0) /* "strict_asm_optimizer_steps/input.yul":110:136 */ @@ -62,6 +50,12 @@ tag_1: 0x00 /* "strict_asm_optimizer_steps/input.yul":172:207 */ return +tag_1: + /* "strict_asm_optimizer_steps/input.yul":85:86 */ + 0x00 + dup1 + /* "strict_asm_optimizer_steps/input.yul":75:87 */ + revert stop sub_0: assembly { @@ -81,7 +75,6 @@ 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 */ revert diff --git a/test/cmdlineTests/viair_abicoder_v1/output b/test/cmdlineTests/viair_abicoder_v1/output index d42a032f8..e75d3148e 100644 --- a/test/cmdlineTests/viair_abicoder_v1/output +++ b/test/cmdlineTests/viair_abicoder_v1/output @@ -11,7 +11,7 @@ IR: object "test_11" { code { /// @src 0:79:169 - mstore(64, 128) + mstore(64, memoryguard(128)) if callvalue() { revert_error_ca66f745a3ce8ff40e2ccaf1ad45db7774001b90d25810abd9040049be7bf4bb() } constructor_test_11() @@ -41,7 +41,7 @@ object "test_11" { object "test_11_deployed" { code { /// @src 0:79:169 - mstore(64, 128) + mstore(64, memoryguard(128)) if iszero(lt(calldatasize(), 4)) { diff --git a/test/cmdlineTests/viair_subobjects/output b/test/cmdlineTests/viair_subobjects/output index 9ca620d06..8f0bea2cb 100644 --- a/test/cmdlineTests/viair_subobjects/output +++ b/test/cmdlineTests/viair_subobjects/output @@ -17,18 +17,19 @@ object "C_3" { code { { /// @src 0:82:95 - 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) } } object "C_3_deployed" { code { { /// @src 0:82:95 - mstore(64, 128) + mstore(64, memoryguard(0x80)) revert(0, 0) } } @@ -55,46 +56,47 @@ object "D_16" { code { { /// @src 0:96:165 - 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) } } object "D_16_deployed" { code { { /// @src 0:96:165 - 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 - let _2 := datasize("C_3") - let _3 := add(/** @src 0:96:165 */ 128, /** @src 0:149:156 */ _2) - if or(gt(_3, 0xffffffffffffffff), lt(_3, /** @src 0:96:165 */ 128)) + if callvalue() { revert(_2, _2) } + if slt(add(calldatasize(), not(3)), _2) { revert(_2, _2) } /// @src 0:149:156 + let _3 := datasize("C_3") + let _4 := add(_1, _3) + if or(gt(_4, 0xffffffffffffffff), lt(_4, _1)) { /// @src 0:96:165 - mstore(_1, shl(224, 0x4e487b71)) + mstore(_2, shl(224, 0x4e487b71)) mstore(4, 0x41) - revert(_1, 0x24) + revert(_2, 0x24) } /// @src 0:149:156 - datacopy(/** @src 0:96:165 */ 128, /** @src 0:149:156 */ dataoffset("C_3"), _2) - if iszero(create(/** @src 0:96:165 */ _1, 128, /** @src 0:149:156 */ _2)) + datacopy(_1, dataoffset("C_3"), _3) + if iszero(create(/** @src 0:96:165 */ _2, /** @src 0:149:156 */ _1, sub(_4, _1))) { /// @src 0:96:165 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) @@ -104,18 +106,19 @@ object "D_16" { code { { /// @src 0:82:95 - 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) } } object "C_3_deployed" { code { { /// @src 0:82:95 - mstore(64, 128) + mstore(64, memoryguard(0x80)) revert(0, 0) } } diff --git a/test/cmdlineTests/yul_optimize_runs/output b/test/cmdlineTests/yul_optimize_runs/output index 20196dcb5..3d2e866f3 100644 --- a/test/cmdlineTests/yul_optimize_runs/output +++ b/test/cmdlineTests/yul_optimize_runs/output @@ -21,7 +21,7 @@ object "RunsTest1" { Binary representation: -602480600d600039806000f3fe7fabc1234500000000000000000000000000000000000000000000000000000000600052 +602580600c6000396000f3fe7fabc123450000000000000000000000000000000000000000000000000000000060005200 Text representation: /* "yul_optimize_runs/input.yul":106:125 */ @@ -33,8 +33,6 @@ Text representation: 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,5 +46,5 @@ sub_0: assembly { 0x00 /* "yul_optimize_runs/input.yul":270:288 */ mstore + stop } - diff --git a/test/cmdlineTests/yul_optimizer_steps/output b/test/cmdlineTests/yul_optimizer_steps/output index af9ef0988..4f1e6597d 100644 --- a/test/cmdlineTests/yul_optimizer_steps/output +++ b/test/cmdlineTests/yul_optimizer_steps/output @@ -11,7 +11,7 @@ object "C_7" { code { { /// @src 0:80:112 - mstore(64, 128) + mstore(64, memoryguard(0x80)) if callvalue() { revert_error_ca66f745a3ce8ff40e2ccaf1ad45db7774001b90d25810abd9040049be7bf4bb() @@ -29,7 +29,7 @@ object "C_7" { code { { /// @src 0:80:112 - mstore(64, 128) + mstore(64, memoryguard(0x80)) if iszero(lt(calldatasize(), 4)) { let selector := shift_right_unsigned(calldataload(0)) diff --git a/test/cmdlineTests/yul_source_locations/output.json b/test/cmdlineTests/yul_source_locations/output.json index ae7d70556..e652ebaff 100644 --- a/test/cmdlineTests/yul_source_locations/output.json +++ b/test/cmdlineTests/yul_source_locations/output.json @@ -10,7 +10,7 @@ object \"C_54\" { code { /// @src 0:79:428 - mstore(64, 160) + mstore(64, memoryguard(160)) if callvalue() { revert_error_ca66f745a3ce8ff40e2ccaf1ad45db7774001b90d25810abd9040049be7bf4bb() } let _1 := copy_arguments_for_constructor_20_object_C_54() @@ -151,7 +151,7 @@ object \"C_54\" { object \"C_54_deployed\" { code { /// @src 0:79:428 - mstore(64, 128) + mstore(64, memoryguard(128)) if iszero(lt(calldatasize(), 4)) { @@ -551,7 +551,7 @@ object \"C_54\" { object \"D_72\" { code { /// @src 1:91:166 - mstore(64, 160) + mstore(64, memoryguard(160)) if callvalue() { revert_error_ca66f745a3ce8ff40e2ccaf1ad45db7774001b90d25810abd9040049be7bf4bb() } let _1 := copy_arguments_for_constructor_71_object_D_72() @@ -755,7 +755,7 @@ object \"D_72\" { object \"D_72_deployed\" { code { /// @src 1:91:166 - mstore(64, 128) + mstore(64, memoryguard(128)) if iszero(lt(calldatasize(), 4)) { diff --git a/test/cmdlineTests/yul_source_locations_in_asm/output.json b/test/cmdlineTests/yul_source_locations_in_asm/output.json index 7c96a12db..ccf73daca 100644 --- a/test/cmdlineTests/yul_source_locations_in_asm/output.json +++ b/test/cmdlineTests/yul_source_locations_in_asm/output.json @@ -1,226 +1,225 @@ {"contracts":{"C":{"C":{"evm":{"assembly":" /* \"C\":79:428 contract C... */ - mstore(0x40, 0xa0) - jumpi(tag_1, iszero(callvalue)) - 0x00 + 0xa0 dup1 - revert -tag_1: + 0x40 + mstore + jumpi(tag_5, callvalue) + 0x1f bytecodeSize codesize dup2 swap1 sub - 0xa0 - 0x1f + swap2 dup3 add not(0x1f) and - dup2 + dup4 add - swap1 + swap2 sub(shl(0x40, 0x01), 0x01) - dup3 + dup4 gt - swap1 - dup3 + dup5 + dup5 lt or - iszero - tag_2 - jumpi - mstore(0x00, shl(0xe0, 0x4e487b71)) - mstore(0x04, 0x41) - revert(0x00, 0x24) -tag_2: - 0x40 - mstore - dup1 - dup3 - 0xa0 - codecopy - 0x20 - dup2 - slt - iszero tag_3 jumpi + dup1 + dup5 + swap3 + 0x20 + swap5 + 0x40 + mstore + dup4 + codecopy + dup2 + add + sub + slt + tag_5 + jumpi + mload + /* \"C\":147:149 42 */ + mstore(0x80, 0x2a) + 0x00 + /* \"C\":79:428 contract C... */ + sstore + mload(0x40) + dataSize(sub_0) + swap1 + dup2 + dataOffset(sub_0) + dup3 + codecopy + mload(0x80) + dup2 + assignImmutable(\"0xe4b1702d9298fee62dfeccc57d322a463ad55ca201256d01f62b45b2e1c21c10\") + return +tag_5: + pop 0x00 dup1 revert tag_3: pop pop - tag_4 - mload(0xa0) - /* \"C\":147:149 42 */ - mstore(0x80, 0x2a) - 0x00 - /* \"C\":79:428 contract C... */ - sstore - /* \"C\":175:223 constructor(int _init)... */ - jump - /* \"C\":79:428 contract C... */ -tag_4: - mload(0x40) - dataSize(sub_0) - dup1 - dataOffset(sub_0) - dup4 - codecopy - mload(0x80) - dup3 - assignImmutable(\"0xe4b1702d9298fee62dfeccc57d322a463ad55ca201256d01f62b45b2e1c21c10\") - dup1 - dup3 - return + pop + pop + mstore(0x00, shl(0xe0, 0x4e487b71)) + mstore(0x04, 0x41) + revert(0x00, 0x24) stop sub_0: assembly { /* \"C\":79:428 contract C... */ mstore(0x40, 0x80) - jumpi(tag_1, lt(calldatasize, 0x04)) + jumpi(tag_1, iszero(lt(calldatasize, 0x04))) + 0x00 + dup1 + revert + tag_1: 0x00 dup1 calldataload 0xe0 shr + dup1 0x26121ff0 - dup2 eq tag_3 jumpi + dup1 0x793816ec - dup2 - eq - tag_4 - jumpi - 0x9942ec6f - dup2 eq tag_5 jumpi - jump(tag_2) - tag_3: - jumpi(tag_6, iszero(callvalue)) - dup2 - dup3 - revert - tag_6: + 0x9942ec6f + eq tag_7 - calldatasize - tag_8 - jump\t// in + jumpi + pop + 0x00 + dup1 + revert tag_7: - /* \"C\":279:298 constVar + immutVar */ - tag_9 + jumpi(tag_9, callvalue) + pop + tag_11 + calldatasize + tag_12 + jump\t// in + tag_11: + tag_13 + tag_14 + /* \"C\":375:378 int */ + tag_15 + jump\t// in + tag_14: + /* \"C\":79:428 contract C... */ + mload(0x40) + swap1 + dup2 + mstore + swap1 + dup2 + swap1 + 0x20 + dup3 + add + swap1 + jump + tag_13: + sub + swap1 + return + tag_9: + dup1 + revert + tag_5: + pop + jumpi(tag_9, callvalue) + tag_13 + swap1 + tag_20 + calldatasize + tag_12 + jump\t// in + tag_20: + sload + mload(0x40) + swap1 + dup2 + mstore + swap1 + dup2 + swap1 + 0x20 + dup3 + add + swap1 + jump + tag_3: + pop + jumpi(tag_9, callvalue) + pop + tag_23 + calldatasize + tag_12 + jump\t// in + tag_23: + tag_13 + tag_14 /* \"C\":290:298 immutVar */ immutable(\"0xe4b1702d9298fee62dfeccc57d322a463ad55ca201256d01f62b45b2e1c21c10\") /* \"C\":279:298 constVar + immutVar */ - tag_10 - jump\t// in - tag_9: - /* \"C\":79:428 contract C... */ - mload(0x40) - dup2 - dup2 - mstore - 0x20 - dup2 - return - tag_4: - jumpi(tag_13, iszero(callvalue)) - dup2 - dup3 - revert - tag_13: - tag_14 - calldatasize - tag_8 - jump\t// in - tag_14: - dup2 - sload - mload(0x40) - dup2 - dup2 - mstore - 0x20 - dup2 - return - tag_5: - jumpi(tag_16, iszero(callvalue)) - dup2 - dup3 - revert - tag_16: - tag_17 - calldatasize - tag_8 - jump\t// in - tag_17: - /* \"C\":375:378 int */ - tag_9 - tag_19 + tag_26 jump\t// in /* \"C\":79:428 contract C... */ - tag_2: - pop - pop - tag_1: - 0x00 - dup1 - revert - tag_8: + tag_12: 0x00 + swap1 not(0x03) - dup3 add slt - iszero - tag_23 + tag_27 jumpi + jump\t// out + tag_27: + pop 0x00 dup1 revert - tag_23: - pop - jump\t// out - tag_24: - 0x00 + tag_29: + swap1 + dup2 0x20 - dup3 - dup5 + swap2 sub slt - iszero - tag_26 + tag_30 jumpi + mload + swap1 + jump\t// out + tag_30: + pop + pop 0x00 dup1 revert tag_26: - pop - mload - swap2 - swap1 - pop - jump\t// out - tag_10: - 0x00 sub(shl(0xff, 0x01), 0x2a) - dup3 + dup2 sgt 0x01 and - iszero - tag_30 + tag_32 jumpi - tag_30 - tag_31 - jump\t// in - tag_30: - pop + tag_33: /* \"C\":117:119 41 */ 0x29 /* \"C\":79:428 contract C... */ @@ -228,84 +227,80 @@ sub_0: assembly { swap1 jump\t// out tag_32: + tag_34 + tag_35 + jump\t// in + tag_34: + jump(tag_33) + tag_36: 0x00 - dup1 - dup3 + dup2 slt dup1 iszero sub(shl(0xff, 0x01), 0x01) - dup5 - swap1 - sub - dup6 - sgt - and - iszero - tag_35 - jumpi - tag_35 - tag_31 - jump\t// in - tag_35: - shl(0xff, 0x01) dup4 swap1 sub dup5 - slt - dup2 + sgt and - iszero tag_37 jumpi - tag_37 - tag_31 - jump\t// in - tag_37: - pop - pop + tag_38: + shl(0xff, 0x01) + dup3 + swap1 + sub + dup4 + slt + and + tag_39 + jumpi add swap1 jump\t// out + tag_39: + tag_41 + tag_35 + jump\t// in + tag_41: + add + swap1 + jump\t// out + tag_37: + tag_42 + tag_35 + jump\t// in + tag_42: + jump(tag_38) /* \"C\":304:341 modifier m()... */ - tag_19: - 0x00 + tag_15: /* \"C\":79:428 contract C... */ + 0x00 dup1 sload - /* \"C\":304:341 modifier m()... */ - dup2 + 0x01 swap1 sub(shl(0xff, 0x01), 0x01) - /* \"C\":79:428 contract C... */ dup2 eq - iszero - tag_40 + tag_43 jumpi - tag_40 - tag_31 - jump\t// in - tag_40: - 0x01 + tag_44: add - dup1 - dup3 + swap1 + dup2 + dup2 sstore /* \"C\":403:407 this */ address /* \"C\":403:411 this.f() */ extcodesize - tag_41 + iszero + tag_45 jumpi /* \"C\":79:428 contract C... */ - dup2 - dup3 - revert - /* \"C\":403:411 this.f() */ - tag_41: - /* \"C\":79:428 contract C... */ mload(0x40) shl(0xe4, 0x026121ff) /* \"C\":403:411 this.f() */ @@ -323,27 +318,41 @@ sub_0: assembly { /* \"C\":403:411 this.f() */ gas staticcall - dup1 - tag_42 - jumpi - /* \"C\":79:428 contract C... */ - mload(0x40) - returndatasize - dup6 + swap2 dup3 - returndatacopy - returndatasize - dup2 - revert - /* \"C\":403:411 this.f() */ - tag_42: - /* \"C\":79:428 contract C... */ - dup4 - /* \"C\":403:411 this.f() */ - dup2 iszero - tag_43 + tag_47 jumpi + dup1 + swap3 + tag_49 + jumpi + tag_50: + pop + pop + tag_51 + swap1 + tag_52 + swap3 + /* \"C\":392:411 stateVar + this.f() */ + tag_36 + jump\t// in + tag_51: + /* \"C\":414:422 immutVar */ + immutable(\"0xe4b1702d9298fee62dfeccc57d322a463ad55ca201256d01f62b45b2e1c21c10\") + swap1 + /* \"C\":392:422 stateVar + this.f() + immutVar */ + tag_36 + jump\t// in + tag_52: + swap1 + /* \"C\":304:341 modifier m()... */ + jump\t// out + tag_49: + swap1 + swap2 + pop + /* \"C\":403:411 this.f() */ returndatasize /* \"C\":79:428 contract C... */ 0x1f @@ -351,21 +360,46 @@ sub_0: assembly { not(0x1f) and /* \"C\":117:119 41 */ - dup4 - add - 0xffffffffffffffff - dup2 - gt - dup5 dup3 + add + swap1 + 0xffffffffffffffff + dup3 + gt + dup4 + dup4 lt or - iszero - tag_44 + tag_53 jumpi + pop + swap2 + tag_55 + tag_51 + swap3 + tag_52 + swap5 + /* \"C\":79:428 contract C... */ + 0x40 + /* \"C\":117:119 41 */ + mstore + /* \"C\":403:411 this.f() */ + returndatasize + dup2 + add + swap1 + tag_29 + jump\t// in + tag_55: + swap2 + dup2 + swap4 + pop + jump(tag_50) + tag_53: shl(0xe0, 0x4e487b71) /* \"C\":79:428 contract C... */ - dup7 + dup2 mstore 0x41 /* \"C\":403:411 this.f() */ @@ -373,57 +407,44 @@ sub_0: assembly { /* \"C\":79:428 contract C... */ mstore 0x24 - dup7 - revert - /* \"C\":117:119 41 */ - tag_44: - /* \"C\":79:428 contract C... */ - 0x40 - /* \"C\":117:119 41 */ - mstore - /* \"C\":403:411 this.f() */ - tag_45 - returndatasize - dup5 - add - dup5 - tag_24 - jump\t// in - tag_45: - swap1 - pop - tag_43: - /* \"C\":392:411 stateVar + this.f() */ - tag_46 - dup2 - dup6 - tag_32 - jump\t// in - tag_46: swap5 pop + /* \"C\":403:411 this.f() */ + swap3 pop pop pop - pop - /* \"C\":392:422 stateVar + this.f() + immutVar */ - tag_47 - /* \"C\":414:422 immutVar */ - immutable(\"0xe4b1702d9298fee62dfeccc57d322a463ad55ca201256d01f62b45b2e1c21c10\") - /* \"C\":392:422 stateVar + this.f() + immutVar */ - dup3 - tag_32 - jump\t// in + /* \"C\":79:428 contract C... */ + revert tag_47: - /* \"C\":336:337 _ */ + swap4 + pop + pop + pop + pop + mload(0x40) + swap1 + returndatasize + swap1 + dup3 + returndatacopy + returndatasize + swap1 + revert + tag_45: swap2 pop pop - /* \"C\":304:341 modifier m()... */ - swap1 - jump\t// out - /* \"C\":79:428 contract C... */ - tag_31: + dup1 + revert + tag_43: + tag_56 + tag_35 + jump\t// in + tag_56: + jump(tag_44) + tag_35: + pop mstore(0x00, shl(0xe0, 0x4e487b71)) mstore(0x04, 0x11) revert(0x00, 0x24) @@ -431,77 +452,81 @@ sub_0: assembly { auxdata: } "}}},"D":{"D":{"evm":{"assembly":" /* \"D\":91:166 contract D is C(3)... */ - mstore(0x40, 0xa0) - jumpi(tag_1, iszero(callvalue)) - 0x00 + 0xa0 dup1 - revert -tag_1: + 0x40 + mstore + jumpi(tag_5, callvalue) + 0x1f bytecodeSize codesize dup2 swap1 sub - 0xa0 - 0x1f + swap2 dup3 add not(0x1f) and - dup2 + dup4 add - swap1 + swap2 sub(shl(0x40, 0x01), 0x01) - dup3 + dup4 gt - swap1 - dup3 + dup5 + dup5 lt or - iszero - tag_2 - jumpi - mstore(0x00, shl(0xe0, 0x4e487b71)) - mstore(0x04, 0x41) - revert(0x00, 0x24) -tag_2: - 0x40 - mstore - dup1 - dup3 - 0xa0 - codecopy - 0x20 - dup2 - slt - iszero tag_3 jumpi + dup1 + dup5 + swap3 + 0x20 + swap5 + 0x40 + mstore + dup4 + codecopy + dup2 + add + sub + slt + tag_5 + jumpi + tag_7 + swap1 + mload + tag_8 + jump\t// in +tag_7: + mload(0x40) + dataSize(sub_0) + swap1 + dup2 + dataOffset(sub_0) + dup3 + codecopy + mload(0x80) + dup2 + assignImmutable(\"0xe4b1702d9298fee62dfeccc57d322a463ad55ca201256d01f62b45b2e1c21c10\") + return +tag_5: + pop 0x00 dup1 revert tag_3: pop pop - tag_4 - mload(0xa0) - tag_5 - jump\t// in -tag_4: - mload(0x40) - dataSize(sub_0) - dup1 - dataOffset(sub_0) - dup4 - codecopy - mload(0x80) - dup3 - assignImmutable(\"0xe4b1702d9298fee62dfeccc57d322a463ad55ca201256d01f62b45b2e1c21c10\") - dup1 - dup3 - return + pop + pop + mstore(0x00, shl(0xe0, 0x4e487b71)) + mstore(0x04, 0x41) + revert(0x00, 0x24) /* \"D\":113:164 constructor(int _init2)... */ -tag_5: +tag_8: /* \"C\":147:149 42 */ mstore(0x80, 0x2a) /* \"D\":107:108 3 */ @@ -514,13 +539,8 @@ tag_5: sgt 0x01 and - iszero - tag_8 + tag_9 jumpi - mstore(0x00, shl(0xe0, 0x4e487b71)) - mstore(0x04, 0x11) - revert(0x00, 0x24) -tag_8: /* \"D\":107:108 3 */ 0x03 /* \"D\":91:166 contract D is C(3)... */ @@ -529,153 +549,161 @@ tag_8: sstore /* \"D\":113:164 constructor(int _init2)... */ jump\t// out +tag_9: + pop + pop + /* \"D\":91:166 contract D is C(3)... */ + mstore(0x00, shl(0xe0, 0x4e487b71)) + mstore(0x04, 0x11) + revert(0x00, 0x24) stop sub_0: assembly { /* \"D\":91:166 contract D is C(3)... */ mstore(0x40, 0x80) - jumpi(tag_1, lt(calldatasize, 0x04)) + jumpi(tag_1, iszero(lt(calldatasize, 0x04))) + 0x00 + dup1 + revert + tag_1: 0x00 dup1 calldataload 0xe0 shr + dup1 0x26121ff0 - dup2 eq tag_3 jumpi + dup1 0x793816ec - dup2 - eq - tag_4 - jumpi - 0x9942ec6f - dup2 eq tag_5 jumpi - jump(tag_2) - tag_3: - jumpi(tag_6, iszero(callvalue)) - dup2 - dup3 - revert - tag_6: + 0x9942ec6f + eq tag_7 - calldatasize - tag_8 - jump\t// in + jumpi + pop + 0x00 + dup1 + revert tag_7: - /* \"C\":279:298 constVar + immutVar */ - tag_9 + jumpi(tag_9, callvalue) + pop + tag_11 + calldatasize + tag_12 + jump\t// in + tag_11: + tag_13 + tag_14 + /* \"C\":375:378 int */ + tag_15 + jump\t// in + tag_14: + /* \"D\":91:166 contract D is C(3)... */ + mload(0x40) + swap1 + dup2 + mstore + swap1 + dup2 + swap1 + 0x20 + dup3 + add + swap1 + jump + tag_13: + sub + swap1 + return + tag_9: + dup1 + revert + tag_5: + pop + jumpi(tag_9, callvalue) + tag_13 + swap1 + tag_20 + calldatasize + tag_12 + jump\t// in + tag_20: + sload + mload(0x40) + swap1 + dup2 + mstore + swap1 + dup2 + swap1 + 0x20 + dup3 + add + swap1 + jump + tag_3: + pop + jumpi(tag_9, callvalue) + pop + tag_23 + calldatasize + tag_12 + jump\t// in + tag_23: + tag_13 + tag_14 /* \"C\":290:298 immutVar */ immutable(\"0xe4b1702d9298fee62dfeccc57d322a463ad55ca201256d01f62b45b2e1c21c10\") /* \"C\":279:298 constVar + immutVar */ - tag_10 - jump\t// in - tag_9: - /* \"D\":91:166 contract D is C(3)... */ - mload(0x40) - dup2 - dup2 - mstore - 0x20 - dup2 - return - tag_4: - jumpi(tag_13, iszero(callvalue)) - dup2 - dup3 - revert - tag_13: - tag_14 - calldatasize - tag_8 - jump\t// in - tag_14: - dup2 - sload - mload(0x40) - dup2 - dup2 - mstore - 0x20 - dup2 - return - tag_5: - jumpi(tag_16, iszero(callvalue)) - dup2 - dup3 - revert - tag_16: - tag_17 - calldatasize - tag_8 - jump\t// in - tag_17: - /* \"C\":375:378 int */ - tag_9 - tag_19 + tag_26 jump\t// in /* \"D\":91:166 contract D is C(3)... */ - tag_2: - pop - pop - tag_1: - 0x00 - dup1 - revert - tag_8: + tag_12: 0x00 + swap1 not(0x03) - dup3 add slt - iszero - tag_23 + tag_27 jumpi + jump\t// out + tag_27: + pop 0x00 dup1 revert - tag_23: - pop - jump\t// out - tag_24: - 0x00 + tag_29: + swap1 + dup2 0x20 - dup3 - dup5 + swap2 sub slt - iszero - tag_26 + tag_30 jumpi + mload + swap1 + jump\t// out + tag_30: + pop + pop 0x00 dup1 revert tag_26: - pop - mload - swap2 - swap1 - pop - jump\t// out - tag_10: - 0x00 sub(shl(0xff, 0x01), 0x2a) - dup3 + dup2 sgt 0x01 and - iszero - tag_30 + tag_32 jumpi - tag_30 - tag_31 - jump\t// in - tag_30: - pop + tag_33: /* \"C\":117:119 41 */ 0x29 /* \"D\":91:166 contract D is C(3)... */ @@ -683,84 +711,80 @@ sub_0: assembly { swap1 jump\t// out tag_32: + tag_34 + tag_35 + jump\t// in + tag_34: + jump(tag_33) + tag_36: 0x00 - dup1 - dup3 + dup2 slt dup1 iszero sub(shl(0xff, 0x01), 0x01) - dup5 - swap1 - sub - dup6 - sgt - and - iszero - tag_35 - jumpi - tag_35 - tag_31 - jump\t// in - tag_35: - shl(0xff, 0x01) dup4 swap1 sub dup5 - slt - dup2 + sgt and - iszero tag_37 jumpi - tag_37 - tag_31 - jump\t// in - tag_37: - pop - pop + tag_38: + shl(0xff, 0x01) + dup3 + swap1 + sub + dup4 + slt + and + tag_39 + jumpi add swap1 jump\t// out + tag_39: + tag_41 + tag_35 + jump\t// in + tag_41: + add + swap1 + jump\t// out + tag_37: + tag_42 + tag_35 + jump\t// in + tag_42: + jump(tag_38) /* \"C\":304:341 modifier m()... */ - tag_19: - 0x00 + tag_15: /* \"D\":91:166 contract D is C(3)... */ + 0x00 dup1 sload - /* \"C\":304:341 modifier m()... */ - dup2 + 0x01 swap1 sub(shl(0xff, 0x01), 0x01) - /* \"D\":91:166 contract D is C(3)... */ dup2 eq - iszero - tag_40 + tag_43 jumpi - tag_40 - tag_31 - jump\t// in - tag_40: - 0x01 + tag_44: add - dup1 - dup3 + swap1 + dup2 + dup2 sstore /* \"C\":403:407 this */ address /* \"C\":403:411 this.f() */ extcodesize - tag_41 + iszero + tag_45 jumpi /* \"D\":91:166 contract D is C(3)... */ - dup2 - dup3 - revert - /* \"C\":403:411 this.f() */ - tag_41: - /* \"D\":91:166 contract D is C(3)... */ mload(0x40) shl(0xe4, 0x026121ff) /* \"C\":403:411 this.f() */ @@ -778,27 +802,41 @@ sub_0: assembly { /* \"C\":403:411 this.f() */ gas staticcall - dup1 - tag_42 - jumpi - /* \"D\":91:166 contract D is C(3)... */ - mload(0x40) - returndatasize - dup6 + swap2 dup3 - returndatacopy - returndatasize - dup2 - revert - /* \"C\":403:411 this.f() */ - tag_42: - /* \"D\":91:166 contract D is C(3)... */ - dup4 - /* \"C\":403:411 this.f() */ - dup2 iszero - tag_43 + tag_47 jumpi + dup1 + swap3 + tag_49 + jumpi + tag_50: + pop + pop + tag_51 + swap1 + tag_52 + swap3 + /* \"C\":392:411 stateVar + this.f() */ + tag_36 + jump\t// in + tag_51: + /* \"C\":414:422 immutVar */ + immutable(\"0xe4b1702d9298fee62dfeccc57d322a463ad55ca201256d01f62b45b2e1c21c10\") + swap1 + /* \"C\":392:422 stateVar + this.f() + immutVar */ + tag_36 + jump\t// in + tag_52: + swap1 + /* \"C\":304:341 modifier m()... */ + jump\t// out + tag_49: + swap1 + swap2 + pop + /* \"C\":403:411 this.f() */ returndatasize /* \"D\":91:166 contract D is C(3)... */ 0x1f @@ -806,21 +844,46 @@ sub_0: assembly { not(0x1f) and /* \"C\":117:119 41 */ - dup4 - add - 0xffffffffffffffff - dup2 - gt - dup5 dup3 + add + swap1 + 0xffffffffffffffff + dup3 + gt + dup4 + dup4 lt or - iszero - tag_44 + tag_53 jumpi + pop + swap2 + tag_55 + tag_51 + swap3 + tag_52 + swap5 + /* \"D\":91:166 contract D is C(3)... */ + 0x40 + /* \"C\":117:119 41 */ + mstore + /* \"C\":403:411 this.f() */ + returndatasize + dup2 + add + swap1 + tag_29 + jump\t// in + tag_55: + swap2 + dup2 + swap4 + pop + jump(tag_50) + tag_53: shl(0xe0, 0x4e487b71) /* \"D\":91:166 contract D is C(3)... */ - dup7 + dup2 mstore 0x41 /* \"C\":403:411 this.f() */ @@ -828,57 +891,44 @@ sub_0: assembly { /* \"D\":91:166 contract D is C(3)... */ mstore 0x24 - dup7 - revert - /* \"C\":117:119 41 */ - tag_44: - /* \"D\":91:166 contract D is C(3)... */ - 0x40 - /* \"C\":117:119 41 */ - mstore - /* \"C\":403:411 this.f() */ - tag_45 - returndatasize - dup5 - add - dup5 - tag_24 - jump\t// in - tag_45: - swap1 - pop - tag_43: - /* \"C\":392:411 stateVar + this.f() */ - tag_46 - dup2 - dup6 - tag_32 - jump\t// in - tag_46: swap5 pop + /* \"C\":403:411 this.f() */ + swap3 pop pop pop - pop - /* \"C\":392:422 stateVar + this.f() + immutVar */ - tag_47 - /* \"C\":414:422 immutVar */ - immutable(\"0xe4b1702d9298fee62dfeccc57d322a463ad55ca201256d01f62b45b2e1c21c10\") - /* \"C\":392:422 stateVar + this.f() + immutVar */ - dup3 - tag_32 - jump\t// in + /* \"D\":91:166 contract D is C(3)... */ + revert tag_47: - /* \"C\":336:337 _ */ + swap4 + pop + pop + pop + pop + mload(0x40) + swap1 + returndatasize + swap1 + dup3 + returndatacopy + returndatasize + swap1 + revert + tag_45: swap2 pop pop - /* \"C\":304:341 modifier m()... */ - swap1 - jump\t// out - /* \"D\":91:166 contract D is C(3)... */ - tag_31: + dup1 + revert + tag_43: + tag_56 + tag_35 + jump\t// in + tag_56: + jump(tag_44) + tag_35: + pop mstore(0x00, shl(0xe0, 0x4e487b71)) mstore(0x04, 0x11) revert(0x00, 0x24) diff --git a/test/cmdlineTests/yul_string_format_ascii/output.json b/test/cmdlineTests/yul_string_format_ascii/output.json index a48cc0d68..35906881b 100644 --- a/test/cmdlineTests/yul_string_format_ascii/output.json +++ b/test/cmdlineTests/yul_string_format_ascii/output.json @@ -10,7 +10,7 @@ object \"C_11\" { code { /// @src 0:78:164 - mstore(64, 128) + mstore(64, memoryguard(128)) if callvalue() { revert_error_ca66f745a3ce8ff40e2ccaf1ad45db7774001b90d25810abd9040049be7bf4bb() } constructor_C_11() @@ -40,7 +40,7 @@ object \"C_11\" { object \"C_11_deployed\" { code { /// @src 0:78:164 - mstore(64, 128) + mstore(64, memoryguard(128)) if iszero(lt(calldatasize(), 4)) { diff --git a/test/cmdlineTests/yul_string_format_ascii_bytes32/output.json b/test/cmdlineTests/yul_string_format_ascii_bytes32/output.json index 6dabd7fdd..5c8c5a8fe 100644 --- a/test/cmdlineTests/yul_string_format_ascii_bytes32/output.json +++ b/test/cmdlineTests/yul_string_format_ascii_bytes32/output.json @@ -10,7 +10,7 @@ object \"C_11\" { code { /// @src 0:78:158 - mstore(64, 128) + mstore(64, memoryguard(128)) if callvalue() { revert_error_ca66f745a3ce8ff40e2ccaf1ad45db7774001b90d25810abd9040049be7bf4bb() } constructor_C_11() @@ -40,7 +40,7 @@ object \"C_11\" { object \"C_11_deployed\" { code { /// @src 0:78:158 - mstore(64, 128) + mstore(64, memoryguard(128)) if iszero(lt(calldatasize(), 4)) { diff --git a/test/cmdlineTests/yul_string_format_ascii_bytes32_from_number/output.json b/test/cmdlineTests/yul_string_format_ascii_bytes32_from_number/output.json index 09e81312b..feedb7e1d 100644 --- a/test/cmdlineTests/yul_string_format_ascii_bytes32_from_number/output.json +++ b/test/cmdlineTests/yul_string_format_ascii_bytes32_from_number/output.json @@ -10,7 +10,7 @@ object \"C_11\" { code { /// @src 0:78:159 - mstore(64, 128) + mstore(64, memoryguard(128)) if callvalue() { revert_error_ca66f745a3ce8ff40e2ccaf1ad45db7774001b90d25810abd9040049be7bf4bb() } constructor_C_11() @@ -40,7 +40,7 @@ object \"C_11\" { object \"C_11_deployed\" { code { /// @src 0:78:159 - mstore(64, 128) + mstore(64, memoryguard(128)) if iszero(lt(calldatasize(), 4)) { diff --git a/test/cmdlineTests/yul_string_format_ascii_long/output.json b/test/cmdlineTests/yul_string_format_ascii_long/output.json index f9110a134..f5fc7021a 100644 --- a/test/cmdlineTests/yul_string_format_ascii_long/output.json +++ b/test/cmdlineTests/yul_string_format_ascii_long/output.json @@ -10,7 +10,7 @@ object \"C_11\" { code { /// @src 0:78:243 - mstore(64, 128) + mstore(64, memoryguard(128)) if callvalue() { revert_error_ca66f745a3ce8ff40e2ccaf1ad45db7774001b90d25810abd9040049be7bf4bb() } constructor_C_11() @@ -40,7 +40,7 @@ object \"C_11\" { object \"C_11_deployed\" { code { /// @src 0:78:243 - mstore(64, 128) + mstore(64, memoryguard(128)) if iszero(lt(calldatasize(), 4)) { diff --git a/test/cmdlineTests/yul_string_format_hex/output.json b/test/cmdlineTests/yul_string_format_hex/output.json index e944cf5e1..a9d78d1ba 100644 --- a/test/cmdlineTests/yul_string_format_hex/output.json +++ b/test/cmdlineTests/yul_string_format_hex/output.json @@ -10,7 +10,7 @@ object \"C_11\" { code { /// @src 0:78:159 - mstore(64, 128) + mstore(64, memoryguard(128)) if callvalue() { revert_error_ca66f745a3ce8ff40e2ccaf1ad45db7774001b90d25810abd9040049be7bf4bb() } constructor_C_11() @@ -40,7 +40,7 @@ object \"C_11\" { object \"C_11_deployed\" { code { /// @src 0:78:159 - mstore(64, 128) + mstore(64, memoryguard(128)) if iszero(lt(calldatasize(), 4)) { diff --git a/test/cmdlineTests/yul_verbatim_msize/output b/test/cmdlineTests/yul_verbatim_msize/output index 5f67aa85e..38df1351f 100644 --- a/test/cmdlineTests/yul_verbatim_msize/output +++ b/test/cmdlineTests/yul_verbatim_msize/output @@ -14,7 +14,7 @@ object "object" { Binary representation: -612000515061616002600055 +61200051506161600260005500 Text representation: /* "yul_verbatim_msize/input.yul":125:131 */ @@ -30,3 +30,4 @@ Text representation: 0x00 /* "yul_verbatim_msize/input.yul":162:174 */ sstore + stop diff --git a/test/libsolidity/gasTests/abiv2_optimised.sol b/test/libsolidity/gasTests/abiv2_optimised.sol index 093acf49a..037b8c26c 100644 --- a/test/libsolidity/gasTests/abiv2_optimised.sol +++ b/test/libsolidity/gasTests/abiv2_optimised.sol @@ -17,13 +17,13 @@ contract C { // optimize-yul: true // ---- // creation: -// codeDepositCost: 680600 -// executionCost: 715 -// totalCost: 681315 +// codeDepositCost: 634400 +// executionCost: 670 +// totalCost: 635070 // external: // a(): 2285 -// b(uint256): 4652 -// f1(uint256): 307 +// b(uint256): 4641 +// f1(uint256): 296 // f2(uint256[],string[],uint16,address): infinite // f3(uint16[],string[],uint16,address): infinite // f4(uint32[],string[12],bytes[2][],address): infinite diff --git a/test/libsolidity/gasTests/dispatch_large_optimised.sol b/test/libsolidity/gasTests/dispatch_large_optimised.sol index ae38258f0..a6890856a 100644 --- a/test/libsolidity/gasTests/dispatch_large_optimised.sol +++ b/test/libsolidity/gasTests/dispatch_large_optimised.sol @@ -27,29 +27,29 @@ contract Large { // optimize-runs: 2 // ---- // creation: -// codeDepositCost: 232800 +// codeDepositCost: 232400 // executionCost: 275 -// totalCost: 233075 +// totalCost: 232675 // external: // a(): 2283 -// b(uint256): 4937 -// f0(uint256): 366 -// f1(uint256): 47006 -// f2(uint256): 24972 -// f3(uint256): 25060 -// f4(uint256): 25038 -// f5(uint256): 25016 -// f6(uint256): 24928 -// f7(uint256): 24708 -// f8(uint256): 24840 -// f9(uint256): 24862 -// g0(uint256): 606 -// g1(uint256): 46718 -// g2(uint256): 24706 -// g3(uint256): 24794 -// g4(uint256): 24772 -// g5(uint256): 24860 -// g6(uint256): 24640 -// g7(uint256): 24750 -// g8(uint256): 24728 -// g9(uint256): 24574 +// b(uint256): 4926 +// f0(uint256): 355 +// f1(uint256): 46995 +// f2(uint256): 24961 +// f3(uint256): 25049 +// f4(uint256): 25027 +// f5(uint256): 25005 +// f6(uint256): 24917 +// f7(uint256): 24697 +// f8(uint256): 24829 +// f9(uint256): 24851 +// g0(uint256): 595 +// g1(uint256): 46707 +// g2(uint256): 24695 +// g3(uint256): 24783 +// g4(uint256): 24761 +// g5(uint256): 24849 +// g6(uint256): 24629 +// g7(uint256): 24739 +// g8(uint256): 24717 +// g9(uint256): 24563 diff --git a/test/libsolidity/gasTests/dispatch_medium_optimised.sol b/test/libsolidity/gasTests/dispatch_medium_optimised.sol index fca8d2695..6f0bac1ed 100644 --- a/test/libsolidity/gasTests/dispatch_medium_optimised.sol +++ b/test/libsolidity/gasTests/dispatch_medium_optimised.sol @@ -14,16 +14,16 @@ contract Medium { // optimize-runs: 2 // ---- // creation: -// codeDepositCost: 131600 +// codeDepositCost: 131200 // executionCost: 177 -// totalCost: 131777 +// totalCost: 131377 // external: // a(): 2283 -// b(uint256): 4695 -// f1(uint256): 46786 -// f2(uint256): 24730 -// f3(uint256): 24774 -// g0(uint256): 364 -// g7(uint256): 24640 -// g8(uint256): 24618 -// g9(uint256): 24574 +// b(uint256): 4684 +// f1(uint256): 46775 +// f2(uint256): 24719 +// f3(uint256): 24763 +// g0(uint256): 353 +// g7(uint256): 24629 +// g8(uint256): 24607 +// g9(uint256): 24563 diff --git a/test/libsolidity/gasTests/dispatch_small_optimised.sol b/test/libsolidity/gasTests/dispatch_small_optimised.sol index 28ddf2af0..46fc65ee6 100644 --- a/test/libsolidity/gasTests/dispatch_small_optimised.sol +++ b/test/libsolidity/gasTests/dispatch_small_optimised.sol @@ -9,11 +9,11 @@ contract Small { // optimize-runs: 2 // ---- // creation: -// codeDepositCost: 60800 +// codeDepositCost: 60400 // executionCost: 111 -// totalCost: 60911 +// totalCost: 60511 // external: // fallback: 118 // a(): 2261 -// b(uint256): 4585 -// f1(uint256): 46720 +// b(uint256): 4574 +// f1(uint256): 46709 diff --git a/test/libsolidity/gasTests/exp_optimized.sol b/test/libsolidity/gasTests/exp_optimized.sol index c934c710e..82353afd3 100644 --- a/test/libsolidity/gasTests/exp_optimized.sol +++ b/test/libsolidity/gasTests/exp_optimized.sol @@ -19,11 +19,11 @@ contract C { // optimize-yul: true // ---- // creation: -// codeDepositCost: 37200 +// codeDepositCost: 36600 // executionCost: 87 -// totalCost: 37287 +// totalCost: 36687 // external: -// exp_neg_one(uint256): 1917 -// exp_one(uint256): 1870 -// exp_two(uint256): 1848 -// exp_zero(uint256): 1892 +// exp_neg_one(uint256): 1906 +// exp_one(uint256): 1859 +// exp_two(uint256): 1837 +// exp_zero(uint256): 1881 diff --git a/test/libsolidity/gasTests/storage_costs.sol b/test/libsolidity/gasTests/storage_costs.sol index 1e4995833..6e1d67f79 100644 --- a/test/libsolidity/gasTests/storage_costs.sol +++ b/test/libsolidity/gasTests/storage_costs.sol @@ -15,10 +15,10 @@ contract C { // optimize-yul: true // ---- // creation: -// codeDepositCost: 27200 +// codeDepositCost: 26600 // executionCost: 81 -// totalCost: 27281 +// totalCost: 26681 // external: // readX(): 2290 // resetX(): 5116 -// setX(uint256): 22312 +// setX(uint256): 22301 diff --git a/test/libsolidity/semanticTests/abiEncoderV1/abi_decode_v2_storage.sol b/test/libsolidity/semanticTests/abiEncoderV1/abi_decode_v2_storage.sol index 91d8447a9..595731eb5 100644 --- a/test/libsolidity/semanticTests/abiEncoderV1/abi_decode_v2_storage.sol +++ b/test/libsolidity/semanticTests/abiEncoderV1/abi_decode_v2_storage.sol @@ -24,6 +24,6 @@ contract C { // compileViaYul: also // ---- // f() -> 0x20, 0x8, 0x40, 0x3, 0x9, 0xa, 0xb -// gas irOptimized: 203556 +// gas irOptimized: 203374 // gas legacy: 206126 -// gas legacyOptimized: 203105 +// gas legacyOptimized: 202860 diff --git a/test/libsolidity/semanticTests/abiEncoderV1/abi_encode_calldata_slice.sol b/test/libsolidity/semanticTests/abiEncoderV1/abi_encode_calldata_slice.sol index 61b8f3810..ed04b0a22 100644 --- a/test/libsolidity/semanticTests/abiEncoderV1/abi_encode_calldata_slice.sol +++ b/test/libsolidity/semanticTests/abiEncoderV1/abi_encode_calldata_slice.sol @@ -60,10 +60,10 @@ contract C { // compileViaYul: also // ---- // test_bytes() -> -// gas irOptimized: 394829 +// gas irOptimized: 377941 // gas legacy: 423563 -// gas legacyOptimized: 331391 +// gas legacyOptimized: 319727 // test_uint256() -> -// gas irOptimized: 553331 +// gas irOptimized: 528609 // gas legacy: 591392 -// gas legacyOptimized: 456137 +// gas legacyOptimized: 440627 diff --git a/test/libsolidity/semanticTests/abiEncoderV1/struct/struct_storage_ptr.sol b/test/libsolidity/semanticTests/abiEncoderV1/struct/struct_storage_ptr.sol index 458c11893..d5074dcbb 100644 --- a/test/libsolidity/semanticTests/abiEncoderV1/struct/struct_storage_ptr.sol +++ b/test/libsolidity/semanticTests/abiEncoderV1/struct/struct_storage_ptr.sol @@ -26,6 +26,6 @@ contract C { // ---- // library: L // f() -> 8, 7, 1, 2, 7, 12 -// gas irOptimized: 167615 +// gas irOptimized: 167580 // gas legacy: 169475 -// gas legacyOptimized: 167397 +// gas legacyOptimized: 167346 diff --git a/test/libsolidity/semanticTests/abiEncoderV2/abi_encode_calldata_slice.sol b/test/libsolidity/semanticTests/abiEncoderV2/abi_encode_calldata_slice.sol index 7b7854c23..064d303fe 100644 --- a/test/libsolidity/semanticTests/abiEncoderV2/abi_encode_calldata_slice.sol +++ b/test/libsolidity/semanticTests/abiEncoderV2/abi_encode_calldata_slice.sol @@ -61,10 +61,10 @@ contract C { // compileViaYul: also // ---- // test_bytes() -> -// gas irOptimized: 394829 +// gas irOptimized: 377941 // gas legacy: 423563 -// gas legacyOptimized: 331391 +// gas legacyOptimized: 319727 // test_uint256() -> -// gas irOptimized: 553331 +// gas irOptimized: 528609 // gas legacy: 591392 -// gas legacyOptimized: 456137 +// gas legacyOptimized: 440627 diff --git a/test/libsolidity/semanticTests/abiEncoderV2/abi_encode_v2.sol b/test/libsolidity/semanticTests/abiEncoderV2/abi_encode_v2.sol index 52a57fdd0..1f3b29589 100644 --- a/test/libsolidity/semanticTests/abiEncoderV2/abi_encode_v2.sol +++ b/test/libsolidity/semanticTests/abiEncoderV2/abi_encode_v2.sol @@ -53,6 +53,6 @@ contract C { // f2() -> 0x20, 0xa0, 0x1, 0x60, 0x2, 0x3, "abc" // f3() -> 0x20, 0xa0, 0x1, 0x60, 0x2, 0x3, "abc" // f4() -> 0x20, 0x160, 0x1, 0x80, 0xc0, 0x2, 0x3, "abc", 0x7, 0x40, 0x2, 0x2, 0x3 -// gas irOptimized: 113296 +// gas irOptimized: 113355 // gas legacy: 114728 -// gas legacyOptimized: 112606 +// gas legacyOptimized: 112680 diff --git a/test/libsolidity/semanticTests/abiEncoderV2/abi_encode_v2_in_function_inherited_in_v1_contract.sol b/test/libsolidity/semanticTests/abiEncoderV2/abi_encode_v2_in_function_inherited_in_v1_contract.sol index f278d314a..092e4cf72 100644 --- a/test/libsolidity/semanticTests/abiEncoderV2/abi_encode_v2_in_function_inherited_in_v1_contract.sol +++ b/test/libsolidity/semanticTests/abiEncoderV2/abi_encode_v2_in_function_inherited_in_v1_contract.sol @@ -32,6 +32,6 @@ contract C is B { // compileViaYul: also // ---- // test() -> 77 -// gas irOptimized: 120952 +// gas irOptimized: 120077 // gas legacy: 155249 -// gas legacyOptimized: 111743 +// gas legacyOptimized: 111111 diff --git a/test/libsolidity/semanticTests/abiEncoderV2/abi_encode_v2_in_modifier_used_in_v1_contract.sol b/test/libsolidity/semanticTests/abiEncoderV2/abi_encode_v2_in_modifier_used_in_v1_contract.sol index 7fceb5935..7832ef601 100644 --- a/test/libsolidity/semanticTests/abiEncoderV2/abi_encode_v2_in_modifier_used_in_v1_contract.sol +++ b/test/libsolidity/semanticTests/abiEncoderV2/abi_encode_v2_in_modifier_used_in_v1_contract.sol @@ -40,5 +40,5 @@ contract C is B { // compileViaYul: also // ---- // test() -> 5, 10 -// gas irOptimized: 88225 +// gas irOptimized: 87578 // gas legacy: 99137 diff --git a/test/libsolidity/semanticTests/abiEncoderV2/calldata_array.sol b/test/libsolidity/semanticTests/abiEncoderV2/calldata_array.sol index 95070c2fb..baa126456 100644 --- a/test/libsolidity/semanticTests/abiEncoderV2/calldata_array.sol +++ b/test/libsolidity/semanticTests/abiEncoderV2/calldata_array.sol @@ -21,6 +21,6 @@ contract C { // f(uint256[][1]): 32, 32, 0 -> true // f(uint256[][1]): 32, 32, 1, 42 -> true // f(uint256[][1]): 32, 32, 8, 421, 422, 423, 424, 425, 426, 427, 428 -> true -// gas irOptimized: 177719 +// gas irOptimized: 172326 // gas legacy: 141900 -// gas legacyOptimized: 121788 +// gas legacyOptimized: 119022 diff --git a/test/libsolidity/semanticTests/abiEncoderV2/storage_array_encoding.sol b/test/libsolidity/semanticTests/abiEncoderV2/storage_array_encoding.sol index 12f12ef29..ad5a8beb5 100644 --- a/test/libsolidity/semanticTests/abiEncoderV2/storage_array_encoding.sol +++ b/test/libsolidity/semanticTests/abiEncoderV2/storage_array_encoding.sol @@ -19,10 +19,10 @@ contract C { // compileViaYul: also // ---- // h(uint256[2][]): 0x20, 3, 123, 124, 223, 224, 323, 324 -> 32, 256, 0x20, 3, 123, 124, 223, 224, 323, 324 -// gas irOptimized: 181123 +// gas irOptimized: 180925 // gas legacy: 184929 -// gas legacyOptimized: 181504 +// gas legacyOptimized: 181363 // i(uint256[2][2]): 123, 124, 223, 224 -> 32, 128, 123, 124, 223, 224 -// gas irOptimized: 112627 +// gas irOptimized: 112535 // gas legacy: 115468 -// gas legacyOptimized: 112988 +// gas legacyOptimized: 112923 diff --git a/test/libsolidity/semanticTests/abiencodedecode/abi_decode_simple_storage.sol b/test/libsolidity/semanticTests/abiencodedecode/abi_decode_simple_storage.sol index cbdaa381f..fa868c3a7 100644 --- a/test/libsolidity/semanticTests/abiencodedecode/abi_decode_simple_storage.sol +++ b/test/libsolidity/semanticTests/abiencodedecode/abi_decode_simple_storage.sol @@ -11,6 +11,6 @@ contract C { // compileViaYul: also // ---- // f(bytes): 0x20, 0x80, 0x21, 0x40, 0x7, "abcdefg" -> 0x21, 0x40, 0x7, "abcdefg" -// gas irOptimized: 135996 +// gas irOptimized: 135918 // gas legacy: 137190 -// gas legacyOptimized: 136082 +// gas legacyOptimized: 135951 diff --git a/test/libsolidity/semanticTests/array/arrays_complex_from_and_to_storage.sol b/test/libsolidity/semanticTests/array/arrays_complex_from_and_to_storage.sol index 7a9eae673..d8eb8e6f3 100644 --- a/test/libsolidity/semanticTests/array/arrays_complex_from_and_to_storage.sol +++ b/test/libsolidity/semanticTests/array/arrays_complex_from_and_to_storage.sol @@ -14,9 +14,9 @@ contract Test { // compileViaYul: also // ---- // set(uint24[3][]): 0x20, 0x06, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, 0x10, 0x11, 0x12 -> 0x06 -// gas irOptimized: 189567 +// gas irOptimized: 189351 // gas legacy: 211485 -// gas legacyOptimized: 206394 +// gas legacyOptimized: 206229 // data(uint256,uint256): 0x02, 0x02 -> 0x09 // data(uint256,uint256): 0x05, 0x01 -> 0x11 // data(uint256,uint256): 0x06, 0x00 -> FAILURE diff --git a/test/libsolidity/semanticTests/array/byte_array_storage_layout.sol b/test/libsolidity/semanticTests/array/byte_array_storage_layout.sol index 251489660..0694dd02f 100644 --- a/test/libsolidity/semanticTests/array/byte_array_storage_layout.sol +++ b/test/libsolidity/semanticTests/array/byte_array_storage_layout.sol @@ -44,14 +44,14 @@ contract c { // storageEmpty -> 1 // test_short() -> 1780731860627700044960722568376587075150542249149356309979516913770823710 // gas legacy: 59838 -// gas legacyOptimized: 58606 +// gas legacyOptimized: 58291 // storageEmpty -> 0 // test_long() -> 67 -// gas irOptimized: 90759 +// gas irOptimized: 89148 // gas legacy: 103590 -// gas legacyOptimized: 101044 +// gas legacyOptimized: 100341 // storageEmpty -> 0 // test_pop() -> 1780731860627700044960722568376592200742329637303199754547598369979433020 // gas legacy: 61930 -// gas legacyOptimized: 59404 +// gas legacyOptimized: 58714 // storageEmpty -> 0 diff --git a/test/libsolidity/semanticTests/array/byte_array_transitional_2.sol b/test/libsolidity/semanticTests/array/byte_array_transitional_2.sol index a4403c3d7..53bfd1693 100644 --- a/test/libsolidity/semanticTests/array/byte_array_transitional_2.sol +++ b/test/libsolidity/semanticTests/array/byte_array_transitional_2.sol @@ -19,6 +19,6 @@ contract c { // compileViaYul: also // ---- // test() -> 0 -// gas irOptimized: 165224 +// gas irOptimized: 158143 // gas legacy: 189715 -// gas legacyOptimized: 184472 +// gas legacyOptimized: 181463 diff --git a/test/libsolidity/semanticTests/array/bytes_length_member.sol b/test/libsolidity/semanticTests/array/bytes_length_member.sol index aaf990ef6..19ece0a16 100644 --- a/test/libsolidity/semanticTests/array/bytes_length_member.sol +++ b/test/libsolidity/semanticTests/array/bytes_length_member.sol @@ -15,7 +15,7 @@ contract c { // ---- // getLength() -> 0 // set(): 1, 2 -> true -// gas irOptimized: 110439 +// gas irOptimized: 110433 // gas legacy: 110726 -// gas legacyOptimized: 110567 +// gas legacyOptimized: 110563 // getLength() -> 68 diff --git a/test/libsolidity/semanticTests/array/copying/array_copy_calldata_storage.sol b/test/libsolidity/semanticTests/array/copying/array_copy_calldata_storage.sol index 4795624b4..5a2e29e43 100644 --- a/test/libsolidity/semanticTests/array/copying/array_copy_calldata_storage.sol +++ b/test/libsolidity/semanticTests/array/copying/array_copy_calldata_storage.sol @@ -22,7 +22,7 @@ contract c { // compileViaYul: also // ---- // store(uint256[9],uint8[3][]): 21, 22, 23, 24, 25, 26, 27, 28, 29, 0x140, 4, 1, 2, 3, 11, 12, 13, 21, 22, 23, 31, 32, 33 -> 32 -// gas irOptimized: 650971 +// gas irOptimized: 650705 // gas legacy: 694515 -// gas legacyOptimized: 694013 +// gas legacyOptimized: 693942 // retrieve() -> 9, 28, 9, 28, 4, 3, 32 diff --git a/test/libsolidity/semanticTests/array/copying/array_copy_cleanup_uint128.sol b/test/libsolidity/semanticTests/array/copying/array_copy_cleanup_uint128.sol index 91ae6913f..3449cdc2d 100644 --- a/test/libsolidity/semanticTests/array/copying/array_copy_cleanup_uint128.sol +++ b/test/libsolidity/semanticTests/array/copying/array_copy_cleanup_uint128.sol @@ -23,6 +23,6 @@ contract C { // compileViaYul: also // ---- // f() -> true -// gas irOptimized: 92843 +// gas irOptimized: 92740 // gas legacy: 93035 // gas legacyOptimized: 92257 diff --git a/test/libsolidity/semanticTests/array/copying/array_copy_cleanup_uint40.sol b/test/libsolidity/semanticTests/array/copying/array_copy_cleanup_uint40.sol index 2b74d52e4..2cb08ec41 100644 --- a/test/libsolidity/semanticTests/array/copying/array_copy_cleanup_uint40.sol +++ b/test/libsolidity/semanticTests/array/copying/array_copy_cleanup_uint40.sol @@ -48,6 +48,6 @@ contract C { // compileViaYul: also // ---- // f() -> true -// gas irOptimized: 153927 +// gas irOptimized: 153263 // gas legacy: 155961 // gas legacyOptimized: 153588 diff --git a/test/libsolidity/semanticTests/array/copying/array_copy_clear_storage.sol b/test/libsolidity/semanticTests/array/copying/array_copy_clear_storage.sol index f8dea7bbe..e90cf7e58 100644 --- a/test/libsolidity/semanticTests/array/copying/array_copy_clear_storage.sol +++ b/test/libsolidity/semanticTests/array/copying/array_copy_clear_storage.sol @@ -15,6 +15,6 @@ contract C { // compileViaYul: also // ---- // f() -> 0 -// gas irOptimized: 135145 +// gas irOptimized: 135098 // gas legacy: 135313 // gas legacyOptimized: 134548 diff --git a/test/libsolidity/semanticTests/array/copying/array_copy_clear_storage_packed.sol b/test/libsolidity/semanticTests/array/copying/array_copy_clear_storage_packed.sol index b9e80c1d7..fa206dd6c 100644 --- a/test/libsolidity/semanticTests/array/copying/array_copy_clear_storage_packed.sol +++ b/test/libsolidity/semanticTests/array/copying/array_copy_clear_storage_packed.sol @@ -42,11 +42,11 @@ contract C { // compileViaYul: also // ---- // f() -> 0 -// gas irOptimized: 92855 +// gas irOptimized: 92773 // gas legacy: 93006 // gas legacyOptimized: 92261 // g() -> 0 // h() -> 0 -// gas irOptimized: 92922 +// gas irOptimized: 92838 // gas legacy: 93028 // gas legacyOptimized: 92303 diff --git a/test/libsolidity/semanticTests/array/copying/array_copy_different_packing.sol b/test/libsolidity/semanticTests/array/copying/array_copy_different_packing.sol index 1cfbd1733..5bb6f5584 100644 --- a/test/libsolidity/semanticTests/array/copying/array_copy_different_packing.sol +++ b/test/libsolidity/semanticTests/array/copying/array_copy_different_packing.sol @@ -21,6 +21,6 @@ contract c { // compileViaYul: also // ---- // test() -> 0x01000000000000000000000000000000000000000000000000, 0x02000000000000000000000000000000000000000000000000, 0x03000000000000000000000000000000000000000000000000, 0x04000000000000000000000000000000000000000000000000, 0x05000000000000000000000000000000000000000000000000 -// gas irOptimized: 212669 +// gas irOptimized: 212623 // gas legacy: 221883 -// gas legacyOptimized: 220734 +// gas legacyOptimized: 220653 diff --git a/test/libsolidity/semanticTests/array/copying/array_copy_including_array.sol b/test/libsolidity/semanticTests/array/copying/array_copy_including_array.sol index 2a58b9256..fa0ee1e14 100644 --- a/test/libsolidity/semanticTests/array/copying/array_copy_including_array.sol +++ b/test/libsolidity/semanticTests/array/copying/array_copy_including_array.sol @@ -37,12 +37,12 @@ contract c { // compileViaYul: also // ---- // test() -> 0x02000202 -// gas irOptimized: 4660920 +// gas irOptimized: 4652092 // gas legacy: 4578341 -// gas legacyOptimized: 4548354 +// gas legacyOptimized: 4548285 // storageEmpty -> 1 // clear() -> 0, 0 -// gas irOptimized: 4491908 +// gas irOptimized: 4483169 // gas legacy: 4410769 -// gas legacyOptimized: 4382531 +// gas legacyOptimized: 4382489 // storageEmpty -> 1 diff --git a/test/libsolidity/semanticTests/array/copying/array_copy_nested_array.sol b/test/libsolidity/semanticTests/array/copying/array_copy_nested_array.sol index deb9404e3..df6160d4d 100644 --- a/test/libsolidity/semanticTests/array/copying/array_copy_nested_array.sol +++ b/test/libsolidity/semanticTests/array/copying/array_copy_nested_array.sol @@ -15,6 +15,6 @@ contract c { // compileViaYul: also // ---- // test(uint256[2][]): 32, 3, 7, 8, 9, 10, 11, 12 -> 10 -// gas irOptimized: 690506 +// gas irOptimized: 690205 // gas legacy: 686268 -// gas legacyOptimized: 685688 +// gas legacyOptimized: 685638 diff --git a/test/libsolidity/semanticTests/array/copying/array_copy_storage_storage_different_base.sol b/test/libsolidity/semanticTests/array/copying/array_copy_storage_storage_different_base.sol index cee96209a..0fd1ca5b6 100644 --- a/test/libsolidity/semanticTests/array/copying/array_copy_storage_storage_different_base.sol +++ b/test/libsolidity/semanticTests/array/copying/array_copy_storage_storage_different_base.sol @@ -19,6 +19,6 @@ contract c { // compileViaYul: also // ---- // test() -> 5, 4 -// gas irOptimized: 226130 +// gas irOptimized: 226020 // gas legacy: 233801 // gas legacyOptimized: 232816 diff --git a/test/libsolidity/semanticTests/array/copying/array_copy_storage_storage_different_base_nested.sol b/test/libsolidity/semanticTests/array/copying/array_copy_storage_storage_different_base_nested.sol index fcec284cc..5fe375812 100644 --- a/test/libsolidity/semanticTests/array/copying/array_copy_storage_storage_different_base_nested.sol +++ b/test/libsolidity/semanticTests/array/copying/array_copy_storage_storage_different_base_nested.sol @@ -24,6 +24,6 @@ contract c { // compileViaYul: also // ---- // test() -> 3, 4 -// gas irOptimized: 190944 +// gas irOptimized: 190510 // gas legacy: 195353 // gas legacyOptimized: 192441 diff --git a/test/libsolidity/semanticTests/array/copying/array_copy_storage_storage_dyn_dyn.sol b/test/libsolidity/semanticTests/array/copying/array_copy_storage_storage_dyn_dyn.sol index b28049ce7..202b3ad26 100644 --- a/test/libsolidity/semanticTests/array/copying/array_copy_storage_storage_dyn_dyn.sol +++ b/test/libsolidity/semanticTests/array/copying/array_copy_storage_storage_dyn_dyn.sol @@ -17,7 +17,7 @@ contract c { // ---- // setData1(uint256,uint256,uint256): 10, 5, 4 -> // copyStorageStorage() -> -// gas irOptimized: 111487 +// gas irOptimized: 111426 // gas legacy: 109278 // gas legacyOptimized: 109268 // getData2(uint256): 5 -> 10, 4 diff --git a/test/libsolidity/semanticTests/array/copying/array_copy_storage_storage_dynamic_dynamic.sol b/test/libsolidity/semanticTests/array/copying/array_copy_storage_storage_dynamic_dynamic.sol index 167e2740e..3b8fe6212 100644 --- a/test/libsolidity/semanticTests/array/copying/array_copy_storage_storage_dynamic_dynamic.sol +++ b/test/libsolidity/semanticTests/array/copying/array_copy_storage_storage_dynamic_dynamic.sol @@ -20,6 +20,6 @@ contract c { // compileViaYul: also // ---- // test() -> 5, 4 -// gas irOptimized: 272806 +// gas irOptimized: 272736 // gas legacy: 270834 // gas legacyOptimized: 269960 diff --git a/test/libsolidity/semanticTests/array/copying/array_copy_storage_storage_static_dynamic.sol b/test/libsolidity/semanticTests/array/copying/array_copy_storage_storage_static_dynamic.sol index 3b2ddbde1..d2d7f4e48 100644 --- a/test/libsolidity/semanticTests/array/copying/array_copy_storage_storage_static_dynamic.sol +++ b/test/libsolidity/semanticTests/array/copying/array_copy_storage_storage_static_dynamic.sol @@ -14,6 +14,6 @@ contract c { // compileViaYul: also // ---- // test() -> 9, 4 -// gas irOptimized: 123172 +// gas irOptimized: 123162 // gas legacy: 123579 // gas legacyOptimized: 123208 diff --git a/test/libsolidity/semanticTests/array/copying/array_copy_storage_storage_static_simple.sol b/test/libsolidity/semanticTests/array/copying/array_copy_storage_storage_static_simple.sol index a7dacd749..9f43d5870 100644 --- a/test/libsolidity/semanticTests/array/copying/array_copy_storage_storage_static_simple.sol +++ b/test/libsolidity/semanticTests/array/copying/array_copy_storage_storage_static_simple.sol @@ -15,4 +15,4 @@ contract C { // ---- // test() -> left(0x01), left(0x02) // gas legacy: 90001 -// gas legacyOptimized: 89085 +// gas legacyOptimized: 89055 diff --git a/test/libsolidity/semanticTests/array/copying/array_copy_storage_storage_static_static.sol b/test/libsolidity/semanticTests/array/copying/array_copy_storage_storage_static_static.sol index 8d438013a..c865b8228 100644 --- a/test/libsolidity/semanticTests/array/copying/array_copy_storage_storage_static_static.sol +++ b/test/libsolidity/semanticTests/array/copying/array_copy_storage_storage_static_static.sol @@ -18,6 +18,6 @@ contract c { // compileViaYul: also // ---- // test() -> 8, 0 -// gas irOptimized: 236016 +// gas irOptimized: 236090 // gas legacy: 234695 // gas legacyOptimized: 234103 diff --git a/test/libsolidity/semanticTests/array/copying/array_copy_storage_storage_struct.sol b/test/libsolidity/semanticTests/array/copying/array_copy_storage_storage_struct.sol index 35776b6a1..db26b4d47 100644 --- a/test/libsolidity/semanticTests/array/copying/array_copy_storage_storage_struct.sol +++ b/test/libsolidity/semanticTests/array/copying/array_copy_storage_storage_struct.sol @@ -19,7 +19,7 @@ contract c { // compileViaYul: also // ---- // test() -> 4, 5 -// gas irOptimized: 239134 +// gas irOptimized: 238826 // gas legacy: 238736 // gas legacyOptimized: 237159 // storageEmpty -> 1 diff --git a/test/libsolidity/semanticTests/array/copying/array_copy_storage_to_memory_nested.sol b/test/libsolidity/semanticTests/array/copying/array_copy_storage_to_memory_nested.sol index 62f1ee715..535d7cff8 100644 --- a/test/libsolidity/semanticTests/array/copying/array_copy_storage_to_memory_nested.sol +++ b/test/libsolidity/semanticTests/array/copying/array_copy_storage_to_memory_nested.sol @@ -17,6 +17,6 @@ contract C { // compileViaYul: also // ---- // f() -> 0x20, 2, 0x40, 0xa0, 2, 0, 1, 2, 2, 3 -// gas irOptimized: 161746 +// gas irOptimized: 161704 // gas legacy: 162278 -// gas legacyOptimized: 159955 +// gas legacyOptimized: 160029 diff --git a/test/libsolidity/semanticTests/array/copying/array_copy_target_leftover.sol b/test/libsolidity/semanticTests/array/copying/array_copy_target_leftover.sol index 537924f14..7ce32d9cf 100644 --- a/test/libsolidity/semanticTests/array/copying/array_copy_target_leftover.sol +++ b/test/libsolidity/semanticTests/array/copying/array_copy_target_leftover.sol @@ -20,6 +20,6 @@ contract c { // compileViaYul: also // ---- // test() -> 0xffffffff, 0x0000000000000000000000000a00090008000700060005000400030002000100, 0x0000000000000000000000000000000000000000000000000000000000000000 -// gas irOptimized: 132180 +// gas irOptimized: 129197 // gas legacy: 186406 -// gas legacyOptimized: 166126 +// gas legacyOptimized: 163309 diff --git a/test/libsolidity/semanticTests/array/copying/array_copy_target_leftover2.sol b/test/libsolidity/semanticTests/array/copying/array_copy_target_leftover2.sol index 36b387971..575179c13 100644 --- a/test/libsolidity/semanticTests/array/copying/array_copy_target_leftover2.sol +++ b/test/libsolidity/semanticTests/array/copying/array_copy_target_leftover2.sol @@ -22,6 +22,6 @@ contract c { // compileViaYul: also // ---- // test() -> 0x04000000000000000000000000000000000000000000000000, 0x0, 0x0 -// gas irOptimized: 93855 +// gas irOptimized: 93867 // gas legacy: 97451 -// gas legacyOptimized: 94200 +// gas legacyOptimized: 94110 diff --git a/test/libsolidity/semanticTests/array/copying/array_copy_target_simple.sol b/test/libsolidity/semanticTests/array/copying/array_copy_target_simple.sol index b0387042f..a68eb0350 100644 --- a/test/libsolidity/semanticTests/array/copying/array_copy_target_simple.sol +++ b/test/libsolidity/semanticTests/array/copying/array_copy_target_simple.sol @@ -22,6 +22,6 @@ contract c { // compileViaYul: also // ---- // test() -> 0x01000000000000000000000000000000000000000000000000, 0x02000000000000000000000000000000000000000000000000, 0x03000000000000000000000000000000000000000000000000, 0x04000000000000000000000000000000000000000000000000, 0x0 -// gas irOptimized: 294958 +// gas irOptimized: 294772 // gas legacy: 303653 -// gas legacyOptimized: 301999 +// gas legacyOptimized: 301918 diff --git a/test/libsolidity/semanticTests/array/copying/array_copy_target_simple_2.sol b/test/libsolidity/semanticTests/array/copying/array_copy_target_simple_2.sol index 893fbdba3..fd4dd7c26 100644 --- a/test/libsolidity/semanticTests/array/copying/array_copy_target_simple_2.sol +++ b/test/libsolidity/semanticTests/array/copying/array_copy_target_simple_2.sol @@ -22,6 +22,6 @@ contract c { // compileViaYul: also // ---- // test() -> 0x01000000000000000000000000000000000000000000000000, 0x02000000000000000000000000000000000000000000000000, 0x03000000000000000000000000000000000000000000000000, 0x04000000000000000000000000000000000000000000000000, 0x00 -// gas irOptimized: 274022 +// gas irOptimized: 273963 // gas legacy: 276381 -// gas legacyOptimized: 275453 +// gas legacyOptimized: 275390 diff --git a/test/libsolidity/semanticTests/array/copying/array_nested_calldata_to_storage.sol b/test/libsolidity/semanticTests/array/copying/array_nested_calldata_to_storage.sol index 78f1bef9f..c3269917d 100644 --- a/test/libsolidity/semanticTests/array/copying/array_nested_calldata_to_storage.sol +++ b/test/libsolidity/semanticTests/array/copying/array_nested_calldata_to_storage.sol @@ -38,10 +38,10 @@ contract c { // compileViaYul: true // ---- // test1(uint256[][]): 0x20, 2, 0x40, 0x40, 2, 23, 42 -> 2, 65 -// gas irOptimized: 181755 +// gas irOptimized: 181314 // test2(uint256[][2]): 0x20, 0x40, 0x40, 2, 23, 42 -> 2, 65 -// gas irOptimized: 158111 +// gas irOptimized: 157895 // test3(uint256[2][]): 0x20, 2, 23, 42, 23, 42 -> 2, 65 -// gas irOptimized: 135282 +// gas irOptimized: 135108 // test4(uint256[2][2]): 23, 42, 23, 42 -> 65 -// gas irOptimized: 111460 +// gas irOptimized: 111428 diff --git a/test/libsolidity/semanticTests/array/copying/array_nested_memory_to_storage.sol b/test/libsolidity/semanticTests/array/copying/array_nested_memory_to_storage.sol index f807b8e2c..bdf5fa17f 100644 --- a/test/libsolidity/semanticTests/array/copying/array_nested_memory_to_storage.sol +++ b/test/libsolidity/semanticTests/array/copying/array_nested_memory_to_storage.sol @@ -40,12 +40,12 @@ contract Test { // compileViaYul: also // ---- // test() -> 24 -// gas irOptimized: 227254 +// gas irOptimized: 227187 // gas legacy: 227133 -// gas legacyOptimized: 226547 +// gas legacyOptimized: 226529 // test1() -> 3 // test2() -> 6 // test3() -> 24 -// gas irOptimized: 133742 +// gas irOptimized: 133621 // gas legacy: 134295 -// gas legacyOptimized: 133383 +// gas legacyOptimized: 133365 diff --git a/test/libsolidity/semanticTests/array/copying/array_of_struct_calldata_to_storage.sol b/test/libsolidity/semanticTests/array/copying/array_of_struct_calldata_to_storage.sol index 27f81692c..b3d950ffa 100644 --- a/test/libsolidity/semanticTests/array/copying/array_of_struct_calldata_to_storage.sol +++ b/test/libsolidity/semanticTests/array/copying/array_of_struct_calldata_to_storage.sol @@ -17,4 +17,4 @@ contract C { // compileViaYul: true // ---- // f((uint128,uint64,uint128)[]): 0x20, 3, 0, 0, 12, 0, 11, 0, 10, 0, 0 -> 10, 11, 12 -// gas irOptimized: 121194 +// gas irOptimized: 121048 diff --git a/test/libsolidity/semanticTests/array/copying/array_of_struct_memory_to_storage.sol b/test/libsolidity/semanticTests/array/copying/array_of_struct_memory_to_storage.sol index 6f11f6c66..2fe271587 100644 --- a/test/libsolidity/semanticTests/array/copying/array_of_struct_memory_to_storage.sol +++ b/test/libsolidity/semanticTests/array/copying/array_of_struct_memory_to_storage.sol @@ -19,4 +19,4 @@ contract C { // compileViaYul: true // ---- // f() -> 10, 11, 12 -// gas irOptimized: 119201 +// gas irOptimized: 119149 diff --git a/test/libsolidity/semanticTests/array/copying/array_of_structs_containing_arrays_calldata_to_storage.sol b/test/libsolidity/semanticTests/array/copying/array_of_structs_containing_arrays_calldata_to_storage.sol index db32fc1d3..1bf460a2f 100644 --- a/test/libsolidity/semanticTests/array/copying/array_of_structs_containing_arrays_calldata_to_storage.sol +++ b/test/libsolidity/semanticTests/array/copying/array_of_structs_containing_arrays_calldata_to_storage.sol @@ -23,4 +23,4 @@ contract C { // compileViaYul: true // ---- // f((uint256[])[]): 0x20, 3, 0x60, 0x60, 0x60, 0x20, 3, 1, 2, 3 -> 3, 1 -// gas irOptimized: 330384 +// gas irOptimized: 328640 diff --git a/test/libsolidity/semanticTests/array/copying/array_of_structs_containing_arrays_memory_to_storage.sol b/test/libsolidity/semanticTests/array/copying/array_of_structs_containing_arrays_memory_to_storage.sol index e4ff169f4..5aeb1b0e2 100644 --- a/test/libsolidity/semanticTests/array/copying/array_of_structs_containing_arrays_memory_to_storage.sol +++ b/test/libsolidity/semanticTests/array/copying/array_of_structs_containing_arrays_memory_to_storage.sol @@ -26,4 +26,4 @@ contract C { // compileViaYul: true // ---- // f() -> 3, 3, 3, 1 -// gas irOptimized: 183411 +// gas irOptimized: 183382 diff --git a/test/libsolidity/semanticTests/array/copying/array_storage_multi_items_per_slot.sol b/test/libsolidity/semanticTests/array/copying/array_storage_multi_items_per_slot.sol index e23efb666..de38034fd 100644 --- a/test/libsolidity/semanticTests/array/copying/array_storage_multi_items_per_slot.sol +++ b/test/libsolidity/semanticTests/array/copying/array_storage_multi_items_per_slot.sol @@ -15,6 +15,6 @@ contract C { // compileViaYul: also // ---- // f() -> 1, 2, 3 -// gas irOptimized: 132580 +// gas irOptimized: 132298 // gas legacy: 134619 // gas legacyOptimized: 131940 diff --git a/test/libsolidity/semanticTests/array/copying/arrays_from_and_to_storage.sol b/test/libsolidity/semanticTests/array/copying/arrays_from_and_to_storage.sol index 388a0d168..0aceae54b 100644 --- a/test/libsolidity/semanticTests/array/copying/arrays_from_and_to_storage.sol +++ b/test/libsolidity/semanticTests/array/copying/arrays_from_and_to_storage.sol @@ -12,9 +12,9 @@ contract Test { // compileViaYul: also // ---- // set(uint24[]): 0x20, 18, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18 -> 18 -// gas irOptimized: 100066 +// gas irOptimized: 100010 // gas legacy: 103815 -// gas legacyOptimized: 101614 +// gas legacyOptimized: 101382 // data(uint256): 7 -> 8 // data(uint256): 15 -> 16 // data(uint256): 18 -> FAILURE diff --git a/test/libsolidity/semanticTests/array/copying/bytes_inside_mappings.sol b/test/libsolidity/semanticTests/array/copying/bytes_inside_mappings.sol index dd5f2a86a..2e151969f 100644 --- a/test/libsolidity/semanticTests/array/copying/bytes_inside_mappings.sol +++ b/test/libsolidity/semanticTests/array/copying/bytes_inside_mappings.sol @@ -7,13 +7,13 @@ contract c { // compileViaYul: also // ---- // set(uint256): 1, 2 -> true -// gas irOptimized: 110678 +// gas irOptimized: 110699 // gas legacy: 111091 -// gas legacyOptimized: 110736 +// gas legacyOptimized: 110721 // set(uint256): 2, 2, 3, 4, 5 -> true -// gas irOptimized: 177635 +// gas irOptimized: 177659 // gas legacy: 178021 -// gas legacyOptimized: 177666 +// gas legacyOptimized: 177651 // storageEmpty -> 0 // copy(uint256,uint256): 1, 2 -> true // storageEmpty -> 0 diff --git a/test/libsolidity/semanticTests/array/copying/bytes_storage_to_storage.sol b/test/libsolidity/semanticTests/array/copying/bytes_storage_to_storage.sol index fb4e2159d..0fbc2c075 100644 --- a/test/libsolidity/semanticTests/array/copying/bytes_storage_to_storage.sol +++ b/test/libsolidity/semanticTests/array/copying/bytes_storage_to_storage.sol @@ -19,25 +19,25 @@ contract c { // ---- // f(uint256): 0 -> 0x20, 0x00 // f(uint256): 31 -> 0x20, 0x1f, 0x0102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e00 -// gas irOptimized: 125470 +// gas irOptimized: 121741 // gas legacy: 124364 -// gas legacyOptimized: 119898 +// gas legacyOptimized: 118790 // f(uint256): 32 -> 0x20, 0x20, 1780731860627700044960722568376592200742329637303199754547598369979440671 -// gas irOptimized: 134121 +// gas irOptimized: 130736 // gas legacy: 135431 -// gas legacyOptimized: 130829 +// gas legacyOptimized: 129004 // f(uint256): 33 -> 0x20, 33, 1780731860627700044960722568376592200742329637303199754547598369979440671, 0x2000000000000000000000000000000000000000000000000000000000000000 -// gas irOptimized: 141217 +// gas irOptimized: 137735 // gas legacy: 142238 -// gas legacyOptimized: 137518 +// gas legacyOptimized: 135634 // f(uint256): 63 -> 0x20, 0x3f, 1780731860627700044960722568376592200742329637303199754547598369979440671, 14532552714582660066924456880521368950258152170031413196862950297402215316992 -// gas irOptimized: 158957 +// gas irOptimized: 152355 // gas legacy: 160728 -// gas legacyOptimized: 152168 +// gas legacyOptimized: 148634 // f(uint256): 12 -> 0x20, 0x0c, 0x0102030405060708090a0b0000000000000000000000000000000000000000 // gas legacy: 59345 -// gas legacyOptimized: 57279 +// gas legacyOptimized: 56816 // f(uint256): 129 -> 0x20, 0x81, 1780731860627700044960722568376592200742329637303199754547598369979440671, 0x202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f, 29063324697304692433803953038474361308315562010425523193971352996434451193439, 0x606162636465666768696a6b6c6d6e6f707172737475767778797a7b7c7d7e7f, -57896044618658097711785492504343953926634992332820282019728792003956564819968 -// gas irOptimized: 419485 +// gas irOptimized: 406101 // gas legacy: 423017 -// gas legacyOptimized: 406021 +// gas legacyOptimized: 398889 diff --git a/test/libsolidity/semanticTests/array/copying/calldata_array_dynamic_to_storage.sol b/test/libsolidity/semanticTests/array/copying/calldata_array_dynamic_to_storage.sol index 7fba61c2c..99c36a0ae 100644 --- a/test/libsolidity/semanticTests/array/copying/calldata_array_dynamic_to_storage.sol +++ b/test/libsolidity/semanticTests/array/copying/calldata_array_dynamic_to_storage.sol @@ -11,6 +11,6 @@ contract C { // compileViaYul: also // ---- // f(uint256[]): 0x20, 0x03, 0x1, 0x2, 0x3 -> 0x1 -// gas irOptimized: 111204 +// gas irOptimized: 111161 // gas legacy: 111565 -// gas legacyOptimized: 111347 +// gas legacyOptimized: 111297 diff --git a/test/libsolidity/semanticTests/array/copying/copy_byte_array_in_struct_to_storage.sol b/test/libsolidity/semanticTests/array/copying/copy_byte_array_in_struct_to_storage.sol index 805b9f92d..d4aba3c58 100644 --- a/test/libsolidity/semanticTests/array/copying/copy_byte_array_in_struct_to_storage.sol +++ b/test/libsolidity/semanticTests/array/copying/copy_byte_array_in_struct_to_storage.sol @@ -37,12 +37,12 @@ contract C { // compileViaYul: also // ---- // f() -> 0x40, 0x80, 6, 0x6162636465660000000000000000000000000000000000000000000000000000, 0x49, 0x3132333435363738393031323334353637383930313233343536373839303120, 0x3132333435363738393031323334353637383930313233343536373839303120, 0x3132333435363738390000000000000000000000000000000000000000000000 -// gas irOptimized: 179963 +// gas irOptimized: 179952 // gas legacy: 180694 -// gas legacyOptimized: 180088 +// gas legacyOptimized: 180079 // g() -> 0x40, 0xc0, 0x49, 0x3132333435363738393031323334353637383930313233343536373839303120, 0x3132333435363738393031323334353637383930313233343536373839303120, 0x3132333435363738390000000000000000000000000000000000000000000000, 0x11, 0x3132333435363738393233343536373839000000000000000000000000000000 -// gas irOptimized: 107332 +// gas irOptimized: 107318 // gas legacy: 107895 -// gas legacyOptimized: 107254 +// gas legacyOptimized: 107235 // h() -> 0x40, 0x60, 0x00, 0x00 // storageEmpty -> 1 diff --git a/test/libsolidity/semanticTests/array/copying/copy_byte_array_to_storage.sol b/test/libsolidity/semanticTests/array/copying/copy_byte_array_to_storage.sol index e48d23e94..994fb174a 100644 --- a/test/libsolidity/semanticTests/array/copying/copy_byte_array_to_storage.sol +++ b/test/libsolidity/semanticTests/array/copying/copy_byte_array_to_storage.sol @@ -48,6 +48,6 @@ contract C { // compileViaYul: also // ---- // f() -> 0xff -// gas irOptimized: 121438 +// gas irOptimized: 121145 // gas legacy: 126745 -// gas legacyOptimized: 123476 +// gas legacyOptimized: 123436 diff --git a/test/libsolidity/semanticTests/array/copying/copy_function_storage_array.sol b/test/libsolidity/semanticTests/array/copying/copy_function_storage_array.sol index 2401d90d9..613953934 100644 --- a/test/libsolidity/semanticTests/array/copying/copy_function_storage_array.sol +++ b/test/libsolidity/semanticTests/array/copying/copy_function_storage_array.sol @@ -18,6 +18,6 @@ contract C { // compileViaYul: also // ---- // test() -> 7 -// gas irOptimized: 126212 +// gas irOptimized: 126658 // gas legacy: 205196 // gas legacyOptimized: 204987 diff --git a/test/libsolidity/semanticTests/array/copying/copy_removes_bytes_data.sol b/test/libsolidity/semanticTests/array/copying/copy_removes_bytes_data.sol index 2532c04af..857f552cb 100644 --- a/test/libsolidity/semanticTests/array/copying/copy_removes_bytes_data.sol +++ b/test/libsolidity/semanticTests/array/copying/copy_removes_bytes_data.sol @@ -9,9 +9,9 @@ contract c { // compileViaYul: also // ---- // set(): 1, 2, 3, 4, 5 -> true -// gas irOptimized: 177396 +// gas irOptimized: 177417 // gas legacy: 177656 -// gas legacyOptimized: 177496 +// gas legacyOptimized: 177492 // storageEmpty -> 0 // reset() -> true // storageEmpty -> 1 diff --git a/test/libsolidity/semanticTests/array/copying/memory_dyn_2d_bytes_to_storage.sol b/test/libsolidity/semanticTests/array/copying/memory_dyn_2d_bytes_to_storage.sol index 5cb657afe..5edbbca4d 100644 --- a/test/libsolidity/semanticTests/array/copying/memory_dyn_2d_bytes_to_storage.sol +++ b/test/libsolidity/semanticTests/array/copying/memory_dyn_2d_bytes_to_storage.sol @@ -20,6 +20,6 @@ contract C { // compileViaYul: also // ---- // f() -> 3 -// gas irOptimized: 131095 +// gas irOptimized: 129943 // gas legacy: 130307 -// gas legacyOptimized: 129363 +// gas legacyOptimized: 129130 diff --git a/test/libsolidity/semanticTests/array/copying/storage_memory_nested.sol b/test/libsolidity/semanticTests/array/copying/storage_memory_nested.sol index 9f325200d..d5f022855 100644 --- a/test/libsolidity/semanticTests/array/copying/storage_memory_nested.sol +++ b/test/libsolidity/semanticTests/array/copying/storage_memory_nested.sol @@ -19,6 +19,6 @@ contract C { // compileViaYul: also // ---- // f() -> 1, 2, 3, 4, 5, 6, 7 -// gas irOptimized: 207030 +// gas irOptimized: 207164 // gas legacy: 212325 -// gas legacyOptimized: 211486 +// gas legacyOptimized: 211450 diff --git a/test/libsolidity/semanticTests/array/copying/storage_memory_nested_bytes.sol b/test/libsolidity/semanticTests/array/copying/storage_memory_nested_bytes.sol index 5749e3ad8..1acd98448 100644 --- a/test/libsolidity/semanticTests/array/copying/storage_memory_nested_bytes.sol +++ b/test/libsolidity/semanticTests/array/copying/storage_memory_nested_bytes.sol @@ -13,6 +13,6 @@ contract C { // compileViaYul: also // ---- // f() -> 0x20, 0x02, 0x40, 0x80, 3, 0x6162630000000000000000000000000000000000000000000000000000000000, 0x99, 44048183304486788312148433451363384677562265908331949128489393215789685032262, 32241931068525137014058842823026578386641954854143559838526554899205067598957, 49951309422467613961193228765530489307475214998374779756599339590522149884499, 0x54555658595a6162636465666768696a6b6c6d6e6f707172737475767778797a, 0x4142434445464748494a4b4c4d4e4f5051525354555658595a00000000000000 -// gas irOptimized: 202750 +// gas irOptimized: 202727 // gas legacy: 204459 -// gas legacyOptimized: 203437 +// gas legacyOptimized: 203479 diff --git a/test/libsolidity/semanticTests/array/copying/storage_memory_nested_from_pointer.sol b/test/libsolidity/semanticTests/array/copying/storage_memory_nested_from_pointer.sol index 8893bd94d..005ed2f3f 100644 --- a/test/libsolidity/semanticTests/array/copying/storage_memory_nested_from_pointer.sol +++ b/test/libsolidity/semanticTests/array/copying/storage_memory_nested_from_pointer.sol @@ -20,6 +20,6 @@ contract C { // compileViaYul: also // ---- // f() -> 1, 2, 3, 4, 5, 6, 7 -// gas irOptimized: 207030 +// gas irOptimized: 207164 // gas legacy: 212330 -// gas legacyOptimized: 211491 +// gas legacyOptimized: 211455 diff --git a/test/libsolidity/semanticTests/array/copying/storage_memory_nested_struct.sol b/test/libsolidity/semanticTests/array/copying/storage_memory_nested_struct.sol index 2e1a2cc3c..3432b3a12 100644 --- a/test/libsolidity/semanticTests/array/copying/storage_memory_nested_struct.sol +++ b/test/libsolidity/semanticTests/array/copying/storage_memory_nested_struct.sol @@ -26,6 +26,6 @@ contract C { // compileViaYul: also // ---- // f() -> 11, 0x0c, 1, 0x15, 22, 4 -// gas irOptimized: 291923 +// gas irOptimized: 292381 // gas legacy: 293516 // gas legacyOptimized: 290263 diff --git a/test/libsolidity/semanticTests/array/copying/storage_memory_packed_dyn.sol b/test/libsolidity/semanticTests/array/copying/storage_memory_packed_dyn.sol index caf1e1dfd..fc387e6bd 100644 --- a/test/libsolidity/semanticTests/array/copying/storage_memory_packed_dyn.sol +++ b/test/libsolidity/semanticTests/array/copying/storage_memory_packed_dyn.sol @@ -15,6 +15,6 @@ contract C { // compileViaYul: also // ---- // f() -> 2, 3, 4 -// gas irOptimized: 114568 +// gas irOptimized: 113828 // gas legacy: 126449 -// gas legacyOptimized: 120902 +// gas legacyOptimized: 120605 diff --git a/test/libsolidity/semanticTests/array/create_memory_array.sol b/test/libsolidity/semanticTests/array/create_memory_array.sol index adc51585a..8072526ab 100644 --- a/test/libsolidity/semanticTests/array/create_memory_array.sol +++ b/test/libsolidity/semanticTests/array/create_memory_array.sol @@ -20,6 +20,6 @@ contract C { // compileViaYul: also // ---- // f() -> "A", 8, 4, "B" -// gas irOptimized: 140716 +// gas irOptimized: 130594 // gas legacy: 121398 // gas legacyOptimized: 115494 diff --git a/test/libsolidity/semanticTests/array/delete/bytes_delete_element.sol b/test/libsolidity/semanticTests/array/delete/bytes_delete_element.sol index f3c4a87b4..9718b5d0b 100644 --- a/test/libsolidity/semanticTests/array/delete/bytes_delete_element.sol +++ b/test/libsolidity/semanticTests/array/delete/bytes_delete_element.sol @@ -18,6 +18,6 @@ contract c { // compileViaYul: also // ---- // test1() -> true -// gas irOptimized: 230748 +// gas irOptimized: 225903 // gas legacy: 255577 -// gas legacyOptimized: 248611 +// gas legacyOptimized: 244795 diff --git a/test/libsolidity/semanticTests/array/delete/delete_storage_array_packed.sol b/test/libsolidity/semanticTests/array/delete/delete_storage_array_packed.sol index 36a2eca41..82c8d6b6c 100644 --- a/test/libsolidity/semanticTests/array/delete/delete_storage_array_packed.sol +++ b/test/libsolidity/semanticTests/array/delete/delete_storage_array_packed.sol @@ -16,4 +16,4 @@ contract C { // compileViaYul: also // ---- // f() -> 0, 0, 0 -// gas irOptimized: 91245 +// gas irOptimized: 91098 diff --git a/test/libsolidity/semanticTests/array/dynamic_array_cleanup.sol b/test/libsolidity/semanticTests/array/dynamic_array_cleanup.sol index 46e3606ba..d21632b10 100644 --- a/test/libsolidity/semanticTests/array/dynamic_array_cleanup.sol +++ b/test/libsolidity/semanticTests/array/dynamic_array_cleanup.sol @@ -16,9 +16,9 @@ contract c { // ---- // storageEmpty -> 1 // fill() -> -// gas irOptimized: 520360 +// gas irOptimized: 519848 // gas legacy: 521773 -// gas legacyOptimized: 517048 +// gas legacyOptimized: 516733 // storageEmpty -> 0 // halfClear() -> // storageEmpty -> 0 diff --git a/test/libsolidity/semanticTests/array/dynamic_arrays_in_storage.sol b/test/libsolidity/semanticTests/array/dynamic_arrays_in_storage.sol index f95a93a22..e6da74238 100644 --- a/test/libsolidity/semanticTests/array/dynamic_arrays_in_storage.sol +++ b/test/libsolidity/semanticTests/array/dynamic_arrays_in_storage.sol @@ -44,9 +44,9 @@ contract c { // ---- // getLengths() -> 0, 0 // setLengths(uint256,uint256): 48, 49 -> -// gas irOptimized: 104851 +// gas irOptimized: 104355 // gas legacy: 108571 -// gas legacyOptimized: 100417 +// gas legacyOptimized: 100401 // getLengths() -> 48, 49 // setIDStatic(uint256): 11 -> // getID(uint256): 2 -> 11 diff --git a/test/libsolidity/semanticTests/array/dynamic_multi_array_cleanup.sol b/test/libsolidity/semanticTests/array/dynamic_multi_array_cleanup.sol index 7d7f4188b..6aecbde32 100644 --- a/test/libsolidity/semanticTests/array/dynamic_multi_array_cleanup.sol +++ b/test/libsolidity/semanticTests/array/dynamic_multi_array_cleanup.sol @@ -18,7 +18,7 @@ contract c { // ---- // storageEmpty -> 1 // fill() -> 8 -// gas irOptimized: 123113 +// gas irOptimized: 122528 // gas legacy: 121756 // gas legacyOptimized: 120687 // storageEmpty -> 0 diff --git a/test/libsolidity/semanticTests/array/fixed_array_cleanup.sol b/test/libsolidity/semanticTests/array/fixed_array_cleanup.sol index c5a63fa3a..1d6cf5180 100644 --- a/test/libsolidity/semanticTests/array/fixed_array_cleanup.sol +++ b/test/libsolidity/semanticTests/array/fixed_array_cleanup.sol @@ -13,9 +13,9 @@ contract c { // ---- // storageEmpty -> 1 // fill() -> -// gas irOptimized: 465690 +// gas irOptimized: 465585 // gas legacy: 471460 -// gas legacyOptimized: 467520 +// gas legacyOptimized: 467220 // storageEmpty -> 0 // clear() -> // storageEmpty -> 1 diff --git a/test/libsolidity/semanticTests/array/fixed_arrays_as_return_type.sol b/test/libsolidity/semanticTests/array/fixed_arrays_as_return_type.sol index 03410a6fe..0a0f38b4c 100644 --- a/test/libsolidity/semanticTests/array/fixed_arrays_as_return_type.sol +++ b/test/libsolidity/semanticTests/array/fixed_arrays_as_return_type.sol @@ -21,6 +21,6 @@ contract B { // compileViaYul: also // ---- // f() -> 2, 3, 4, 5, 6, 1000, 1001, 1002, 1003, 1004 -// gas irOptimized: 121038 +// gas irOptimized: 131151 // gas legacy: 235167 -// gas legacyOptimized: 133299 +// gas legacyOptimized: 129566 diff --git a/test/libsolidity/semanticTests/array/function_array_cross_calls.sol b/test/libsolidity/semanticTests/array/function_array_cross_calls.sol index b8b4d4e00..b8939f510 100644 --- a/test/libsolidity/semanticTests/array/function_array_cross_calls.sol +++ b/test/libsolidity/semanticTests/array/function_array_cross_calls.sol @@ -45,6 +45,6 @@ contract C { // compileViaYul: also // ---- // test() -> 5, 6, 7 -// gas irOptimized: 299965 +// gas irOptimized: 302932 // gas legacy: 463662 -// gas legacyOptimized: 296513 +// gas legacyOptimized: 294801 diff --git a/test/libsolidity/semanticTests/array/pop/array_pop_array_transition.sol b/test/libsolidity/semanticTests/array/pop/array_pop_array_transition.sol index 9788b6136..f429c9a07 100644 --- a/test/libsolidity/semanticTests/array/pop/array_pop_array_transition.sol +++ b/test/libsolidity/semanticTests/array/pop/array_pop_array_transition.sol @@ -25,7 +25,7 @@ contract c { // compileViaYul: also // ---- // test() -> 1, 2, 3 -// gas irOptimized: 2272395 +// gas irOptimized: 2271482 // gas legacy: 2273722 -// gas legacyOptimized: 2262396 +// gas legacyOptimized: 2261793 // storageEmpty -> 1 diff --git a/test/libsolidity/semanticTests/array/pop/array_pop_uint16_transition.sol b/test/libsolidity/semanticTests/array/pop/array_pop_uint16_transition.sol index 3ad0d8f32..db2cc5aa2 100644 --- a/test/libsolidity/semanticTests/array/pop/array_pop_uint16_transition.sol +++ b/test/libsolidity/semanticTests/array/pop/array_pop_uint16_transition.sol @@ -20,7 +20,7 @@ contract c { // compileViaYul: also // ---- // test() -> 38, 28, 18 -// gas irOptimized: 192323 +// gas irOptimized: 188649 // gas legacy: 189780 -// gas legacyOptimized: 178870 +// gas legacyOptimized: 178267 // storageEmpty -> 1 diff --git a/test/libsolidity/semanticTests/array/pop/array_pop_uint24_transition.sol b/test/libsolidity/semanticTests/array/pop/array_pop_uint24_transition.sol index dc3b2a861..5505e5f7e 100644 --- a/test/libsolidity/semanticTests/array/pop/array_pop_uint24_transition.sol +++ b/test/libsolidity/semanticTests/array/pop/array_pop_uint24_transition.sol @@ -20,7 +20,7 @@ contract c { // compileViaYul: also // ---- // test() -> 20, 10 -// gas irOptimized: 161105 +// gas irOptimized: 159175 // gas legacy: 159459 -// gas legacyOptimized: 153281 +// gas legacyOptimized: 152903 // storageEmpty -> 1 diff --git a/test/libsolidity/semanticTests/array/pop/byte_array_pop_copy_long.sol b/test/libsolidity/semanticTests/array/pop/byte_array_pop_copy_long.sol index 2b893c668..6967b2291 100644 --- a/test/libsolidity/semanticTests/array/pop/byte_array_pop_copy_long.sol +++ b/test/libsolidity/semanticTests/array/pop/byte_array_pop_copy_long.sol @@ -12,6 +12,6 @@ contract c { // compileViaYul: also // ---- // test() -> 0x20, 29, 0x0303030303030303030303030303030303030303030303030303030303000000 -// gas irOptimized: 111157 +// gas irOptimized: 109503 // gas legacy: 127309 -// gas legacyOptimized: 124136 +// gas legacyOptimized: 123625 diff --git a/test/libsolidity/semanticTests/array/pop/byte_array_pop_long_storage_empty.sol b/test/libsolidity/semanticTests/array/pop/byte_array_pop_long_storage_empty.sol index bf605984b..c3d54ce00 100644 --- a/test/libsolidity/semanticTests/array/pop/byte_array_pop_long_storage_empty.sol +++ b/test/libsolidity/semanticTests/array/pop/byte_array_pop_long_storage_empty.sol @@ -18,7 +18,7 @@ contract c { // compileViaYul: also // ---- // test() -> true -// gas irOptimized: 205254 +// gas irOptimized: 196545 // gas legacy: 229864 -// gas legacyOptimized: 210964 +// gas legacyOptimized: 206187 // storageEmpty -> 1 diff --git a/test/libsolidity/semanticTests/array/pop/byte_array_pop_long_storage_empty_garbage_ref.sol b/test/libsolidity/semanticTests/array/pop/byte_array_pop_long_storage_empty_garbage_ref.sol index 09e65f0c5..df42e4713 100644 --- a/test/libsolidity/semanticTests/array/pop/byte_array_pop_long_storage_empty_garbage_ref.sol +++ b/test/libsolidity/semanticTests/array/pop/byte_array_pop_long_storage_empty_garbage_ref.sol @@ -17,7 +17,7 @@ contract c { // compileViaYul: also // ---- // test() -> -// gas irOptimized: 146450 +// gas irOptimized: 142640 // gas legacy: 165363 -// gas legacyOptimized: 159446 +// gas legacyOptimized: 157534 // storageEmpty -> 1 diff --git a/test/libsolidity/semanticTests/array/pop/byte_array_pop_masking_long.sol b/test/libsolidity/semanticTests/array/pop/byte_array_pop_masking_long.sol index ca5909722..3aeb8e222 100644 --- a/test/libsolidity/semanticTests/array/pop/byte_array_pop_masking_long.sol +++ b/test/libsolidity/semanticTests/array/pop/byte_array_pop_masking_long.sol @@ -12,6 +12,6 @@ contract c { // compileViaYul: also // ---- // test() -> 0x20, 33, 0x303030303030303030303030303030303030303030303030303030303030303, 0x0300000000000000000000000000000000000000000000000000000000000000 -// gas irOptimized: 109314 +// gas irOptimized: 108493 // gas legacy: 126187 -// gas legacyOptimized: 123261 +// gas legacyOptimized: 122769 diff --git a/test/libsolidity/semanticTests/array/push/array_push.sol b/test/libsolidity/semanticTests/array/push/array_push.sol index 83cceeb56..e8ec36639 100644 --- a/test/libsolidity/semanticTests/array/push/array_push.sol +++ b/test/libsolidity/semanticTests/array/push/array_push.sol @@ -18,6 +18,6 @@ contract c { // compileViaYul: also // ---- // test() -> 5, 4, 3, 3 -// gas irOptimized: 111289 +// gas irOptimized: 111317 // gas legacy: 111838 // gas legacyOptimized: 111128 diff --git a/test/libsolidity/semanticTests/array/push/array_push_nested_from_calldata.sol b/test/libsolidity/semanticTests/array/push/array_push_nested_from_calldata.sol index 39f99a9bd..1849b0d88 100644 --- a/test/libsolidity/semanticTests/array/push/array_push_nested_from_calldata.sol +++ b/test/libsolidity/semanticTests/array/push/array_push_nested_from_calldata.sol @@ -14,6 +14,6 @@ contract C { // compileViaYul: also // ---- // f(uint120[]): 0x20, 3, 1, 2, 3 -> 1 -// gas irOptimized: 113393 +// gas irOptimized: 113267 // gas legacy: 113686 -// gas legacyOptimized: 113499 +// gas legacyOptimized: 113449 diff --git a/test/libsolidity/semanticTests/array/push/array_push_packed_array.sol b/test/libsolidity/semanticTests/array/push/array_push_packed_array.sol index 72ab9ea14..04f9544a9 100644 --- a/test/libsolidity/semanticTests/array/push/array_push_packed_array.sol +++ b/test/libsolidity/semanticTests/array/push/array_push_packed_array.sol @@ -16,6 +16,6 @@ contract c { // compileViaYul: also // ---- // test() -> 1, 2, 3, 4 -// gas irOptimized: 93200 +// gas irOptimized: 93017 // gas legacy: 92798 // gas legacyOptimized: 92062 diff --git a/test/libsolidity/semanticTests/array/push/array_push_struct.sol b/test/libsolidity/semanticTests/array/push/array_push_struct.sol index 4b80a6e03..6e667d5ac 100644 --- a/test/libsolidity/semanticTests/array/push/array_push_struct.sol +++ b/test/libsolidity/semanticTests/array/push/array_push_struct.sol @@ -22,6 +22,6 @@ contract c { // compileViaYul: also // ---- // test() -> 2, 3, 4, 5 -// gas irOptimized: 137059 +// gas irOptimized: 136915 // gas legacy: 147484 // gas legacyOptimized: 146456 diff --git a/test/libsolidity/semanticTests/array/push/array_push_struct_from_calldata.sol b/test/libsolidity/semanticTests/array/push/array_push_struct_from_calldata.sol index b6788c076..558f2991f 100644 --- a/test/libsolidity/semanticTests/array/push/array_push_struct_from_calldata.sol +++ b/test/libsolidity/semanticTests/array/push/array_push_struct_from_calldata.sol @@ -18,6 +18,6 @@ contract c { // compileViaYul: also // ---- // test((uint16,uint16,uint16[3],uint16[])): 0x20, 2, 3, 0, 0, 4, 0xC0, 4, 0, 0, 5, 0, 0 -> 2, 3, 4, 5 -// gas irOptimized: 139100 +// gas irOptimized: 138807 // gas legacy: 144322 -// gas legacyOptimized: 139171 +// gas legacyOptimized: 139010 diff --git a/test/libsolidity/semanticTests/array/push/byte_array_push_transition.sol b/test/libsolidity/semanticTests/array/push/byte_array_push_transition.sol index 86ef51a81..25bcfcc7b 100644 --- a/test/libsolidity/semanticTests/array/push/byte_array_push_transition.sol +++ b/test/libsolidity/semanticTests/array/push/byte_array_push_transition.sol @@ -17,6 +17,6 @@ contract c { // compileViaYul: also // ---- // test() -> 0 -// gas irOptimized: 185231 +// gas irOptimized: 176848 // gas legacy: 218028 -// gas legacyOptimized: 205124 +// gas legacyOptimized: 201460 diff --git a/test/libsolidity/semanticTests/array/push/nested_bytes_push.sol b/test/libsolidity/semanticTests/array/push/nested_bytes_push.sol index f1a245ce4..4964f8706 100644 --- a/test/libsolidity/semanticTests/array/push/nested_bytes_push.sol +++ b/test/libsolidity/semanticTests/array/push/nested_bytes_push.sol @@ -15,6 +15,6 @@ contract C { // compileViaYul: also // ---- // f() -> -// gas irOptimized: 179867 +// gas irOptimized: 179590 // gas legacy: 180620 -// gas legacyOptimized: 180403 +// gas legacyOptimized: 180359 diff --git a/test/libsolidity/semanticTests/array/push/push_no_args_2d.sol b/test/libsolidity/semanticTests/array/push/push_no_args_2d.sol index fe6138a4a..2605afe31 100644 --- a/test/libsolidity/semanticTests/array/push/push_no_args_2d.sol +++ b/test/libsolidity/semanticTests/array/push/push_no_args_2d.sol @@ -29,16 +29,16 @@ contract C { // ---- // l() -> 0 // f(uint256,uint256): 42, 64 -> -// gas irOptimized: 114151 +// gas irOptimized: 112555 // gas legacy: 108234 -// gas legacyOptimized: 102245 +// gas legacyOptimized: 101842 // l() -> 1 // ll(uint256): 0 -> 43 // a(uint256,uint256): 0, 42 -> 64 // f(uint256,uint256): 84, 128 -> -// gas irOptimized: 119535 +// gas irOptimized: 116427 // gas legacy: 107780 -// gas legacyOptimized: 96331 +// gas legacyOptimized: 95550 // l() -> 2 // ll(uint256): 1 -> 85 // a(uint256,uint256): 0, 42 -> 64 diff --git a/test/libsolidity/semanticTests/array/push/push_no_args_bytes.sol b/test/libsolidity/semanticTests/array/push/push_no_args_bytes.sol index 093d3aa5a..cb84ec4f0 100644 --- a/test/libsolidity/semanticTests/array/push/push_no_args_bytes.sol +++ b/test/libsolidity/semanticTests/array/push/push_no_args_bytes.sol @@ -23,9 +23,9 @@ contract C { // ---- // l() -> 0 // g(uint256): 70 -> -// gas irOptimized: 191389 +// gas irOptimized: 184507 // gas legacy: 184991 -// gas legacyOptimized: 180608 +// gas legacyOptimized: 179307 // l() -> 70 // a(uint256): 69 -> left(69) // f() -> diff --git a/test/libsolidity/semanticTests/array/reusing_memory.sol b/test/libsolidity/semanticTests/array/reusing_memory.sol index 7ae96a3d6..4002a303c 100644 --- a/test/libsolidity/semanticTests/array/reusing_memory.sol +++ b/test/libsolidity/semanticTests/array/reusing_memory.sol @@ -26,6 +26,6 @@ contract Main { // compileViaYul: also // ---- // f(uint256): 0x34 -> 0x46bddb1178e94d7f2892ff5f366840eb658911794f2c3a44c450aa2c505186c1 -// gas irOptimized: 113954 +// gas irOptimized: 113776 // gas legacy: 126852 -// gas legacyOptimized: 114079 +// gas legacyOptimized: 114015 diff --git a/test/libsolidity/semanticTests/constructor/arrays_in_constructors.sol b/test/libsolidity/semanticTests/constructor/arrays_in_constructors.sol index bc0afd393..6836fe1b8 100644 --- a/test/libsolidity/semanticTests/constructor/arrays_in_constructors.sol +++ b/test/libsolidity/semanticTests/constructor/arrays_in_constructors.sol @@ -26,6 +26,6 @@ contract Creator { // compileViaYul: also // ---- // f(uint256,address[]): 7, 0x40, 10, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 -> 7, 8 -// gas irOptimized: 459815 +// gas irOptimized: 458969 // gas legacy: 592626 -// gas legacyOptimized: 450224 +// gas legacyOptimized: 447988 diff --git a/test/libsolidity/semanticTests/constructor/bytes_in_constructors_packer.sol b/test/libsolidity/semanticTests/constructor/bytes_in_constructors_packer.sol index c0123af13..93f6731b9 100644 --- a/test/libsolidity/semanticTests/constructor/bytes_in_constructors_packer.sol +++ b/test/libsolidity/semanticTests/constructor/bytes_in_constructors_packer.sol @@ -26,6 +26,6 @@ contract Creator { // compileViaYul: also // ---- // f(uint256,bytes): 7, 0x40, 78, "abcdefghijklmnopqrstuvwxyzabcdef", "ghijklmnopqrstuvwxyzabcdefghijkl", "mnopqrstuvwxyz" -> 7, "h" -// gas irOptimized: 312176 +// gas irOptimized: 308702 // gas legacy: 429173 -// gas legacyOptimized: 298384 +// gas legacyOptimized: 298280 diff --git a/test/libsolidity/semanticTests/constructor/no_callvalue_check.sol b/test/libsolidity/semanticTests/constructor/no_callvalue_check.sol index 3bf97c49b..3fdbb0785 100644 --- a/test/libsolidity/semanticTests/constructor/no_callvalue_check.sol +++ b/test/libsolidity/semanticTests/constructor/no_callvalue_check.sol @@ -19,6 +19,6 @@ contract C { // compileViaYul: also // ---- // f(), 2000 ether -> true -// gas irOptimized: 123090 +// gas irOptimized: 123037 // gas legacy: 123226 // gas legacyOptimized: 123092 diff --git a/test/libsolidity/semanticTests/events/event_dynamic_array_storage.sol b/test/libsolidity/semanticTests/events/event_dynamic_array_storage.sol index 2da24603e..61247292c 100644 --- a/test/libsolidity/semanticTests/events/event_dynamic_array_storage.sol +++ b/test/libsolidity/semanticTests/events/event_dynamic_array_storage.sol @@ -15,6 +15,6 @@ contract C { // ---- // createEvent(uint256): 42 -> // ~ emit E(uint256[]): 0x20, 0x03, 0x2a, 0x2b, 0x2c -// gas irOptimized: 114816 +// gas irOptimized: 114746 // gas legacy: 116393 -// gas legacyOptimized: 114415 +// gas legacyOptimized: 114385 diff --git a/test/libsolidity/semanticTests/events/event_dynamic_array_storage_v2.sol b/test/libsolidity/semanticTests/events/event_dynamic_array_storage_v2.sol index 8e02a5bfc..da617c810 100644 --- a/test/libsolidity/semanticTests/events/event_dynamic_array_storage_v2.sol +++ b/test/libsolidity/semanticTests/events/event_dynamic_array_storage_v2.sol @@ -16,6 +16,6 @@ contract C { // ---- // createEvent(uint256): 42 -> // ~ emit E(uint256[]): 0x20, 0x03, 0x2a, 0x2b, 0x2c -// gas irOptimized: 114816 +// gas irOptimized: 114746 // gas legacy: 116393 -// gas legacyOptimized: 114415 +// gas legacyOptimized: 114385 diff --git a/test/libsolidity/semanticTests/events/event_dynamic_nested_array_storage_v2.sol b/test/libsolidity/semanticTests/events/event_dynamic_nested_array_storage_v2.sol index f9e773b75..6a22bac5d 100644 --- a/test/libsolidity/semanticTests/events/event_dynamic_nested_array_storage_v2.sol +++ b/test/libsolidity/semanticTests/events/event_dynamic_nested_array_storage_v2.sol @@ -17,6 +17,6 @@ contract C { // ---- // createEvent(uint256): 42 -> // ~ emit E(uint256[][]): 0x20, 0x02, 0x40, 0xa0, 0x02, 0x2a, 0x2b, 0x02, 0x2c, 0x2d -// gas irOptimized: 185564 +// gas irOptimized: 185422 // gas legacy: 187621 -// gas legacyOptimized: 184551 +// gas legacyOptimized: 184587 diff --git a/test/libsolidity/semanticTests/events/event_indexed_mixed.sol b/test/libsolidity/semanticTests/events/event_indexed_mixed.sol index e816a4961..5b253f2ad 100644 --- a/test/libsolidity/semanticTests/events/event_indexed_mixed.sol +++ b/test/libsolidity/semanticTests/events/event_indexed_mixed.sol @@ -13,6 +13,6 @@ contract C { // ---- // deposit() -> // ~ emit E(uint256,uint256,uint256,bytes): #0x02, 0x01, 0x03, 0x60, 0x03, "def" -// gas irOptimized: 23685 +// gas irOptimized: 23709 // gas legacy: 24170 -// gas legacyOptimized: 23753 +// gas legacyOptimized: 23744 diff --git a/test/libsolidity/semanticTests/events/event_indexed_string.sol b/test/libsolidity/semanticTests/events/event_indexed_string.sol index a411da3c6..dee51918f 100644 --- a/test/libsolidity/semanticTests/events/event_indexed_string.sol +++ b/test/libsolidity/semanticTests/events/event_indexed_string.sol @@ -19,6 +19,6 @@ contract C { // ---- // deposit() -> // ~ emit E(string,uint256[4]): #0xa7fb06bb999a5eb9aff9e0779953f4e1e4ce58044936c2f51c7fb879b85c08bd, #0xe755d8cc1a8cde16a2a31160dcd8017ac32d7e2f13215b29a23cdae40a78aa81 -// gas irOptimized: 353515 +// gas irOptimized: 343396 // gas legacy: 390742 -// gas legacyOptimized: 376774 +// gas legacyOptimized: 372772 diff --git a/test/libsolidity/semanticTests/externalContracts/FixedFeeRegistrar.sol b/test/libsolidity/semanticTests/externalContracts/FixedFeeRegistrar.sol index b7be3cf05..f48fc44a1 100644 --- a/test/libsolidity/semanticTests/externalContracts/FixedFeeRegistrar.sol +++ b/test/libsolidity/semanticTests/externalContracts/FixedFeeRegistrar.sol @@ -76,14 +76,14 @@ contract FixedFeeRegistrar is Registrar { // compileViaYul: also // ---- // constructor() -// gas irOptimized: 433748 +// gas irOptimized: 425623 // gas legacy: 936897 -// gas legacyOptimized: 491019 +// gas legacyOptimized: 477758 // reserve(string), 69 ether: 0x20, 3, "abc" -> // ~ emit Changed(string): #0x4e03657aea45a94fc7d47ba826c8d667c0d1e6e33a64a036ec44f58fa12d6c45 -// gas irOptimized: 46070 +// gas irOptimized: 45967 // gas legacy: 46842 -// gas legacyOptimized: 46091 +// gas legacyOptimized: 46018 // owner(string): 0x20, 3, "abc" -> 0x1212121212121212121212121212120000000012 // reserve(string), 70 ether: 0x20, 3, "def" -> // ~ emit Changed(string): #0x34607c9bbfeb9c23509680f04363f298fdb0b5f9abe327304ecd1daca08cda9c diff --git a/test/libsolidity/semanticTests/externalContracts/deposit_contract.sol b/test/libsolidity/semanticTests/externalContracts/deposit_contract.sol index 81efd3566..d41f68179 100644 --- a/test/libsolidity/semanticTests/externalContracts/deposit_contract.sol +++ b/test/libsolidity/semanticTests/externalContracts/deposit_contract.sol @@ -178,35 +178,35 @@ contract DepositContract is IDepositContract, ERC165 { // compileViaYul: also // ---- // constructor() -// gas irOptimized: 1657475 +// gas irOptimized: 1608070 // gas legacy: 2580394 -// gas legacyOptimized: 1775403 +// gas legacyOptimized: 1744859 // supportsInterface(bytes4): 0x0 -> 0 // supportsInterface(bytes4): 0xffffffff00000000000000000000000000000000000000000000000000000000 -> false # defined to be false by ERC-165 # // supportsInterface(bytes4): 0x01ffc9a700000000000000000000000000000000000000000000000000000000 -> true # ERC-165 id # // supportsInterface(bytes4): 0x8564090700000000000000000000000000000000000000000000000000000000 -> true # the deposit interface id # // get_deposit_root() -> 0xd70a234731285c6804c2a4f56711ddb8c82c99740f207854891028af34e27e5e -// gas irOptimized: 122599 +// gas irOptimized: 122169 // gas legacy: 150465 -// gas legacyOptimized: 122798 +// gas legacyOptimized: 122458 // get_deposit_count() -> 0x20, 8, 0 # TODO: check balance and logs after each deposit # // deposit(bytes,bytes,bytes,bytes32), 32 ether: 0 -> FAILURE # Empty input # // get_deposit_root() -> 0xd70a234731285c6804c2a4f56711ddb8c82c99740f207854891028af34e27e5e -// gas irOptimized: 122599 +// gas irOptimized: 122169 // gas legacy: 150465 -// gas legacyOptimized: 122798 +// gas legacyOptimized: 122458 // get_deposit_count() -> 0x20, 8, 0 // deposit(bytes,bytes,bytes,bytes32), 1 ether: 0x80, 0xe0, 0x120, 0xaa4a8d0b7d9077248630f1a4701ae9764e42271d7f22b7838778411857fd349e, 0x30, 0x933ad9491b62059dd065b560d256d8957a8c402cc6e8d8ee7290ae11e8f73292, 0x67a8811c397529dac52ae1342ba58c9500000000000000000000000000000000, 0x20, 0x00f50428677c60f997aadeab24aabf7fceaef491c96a52b463ae91f95611cf71, 0x60, 0xa29d01cc8c6296a8150e515b5995390ef841dc18948aa3e79be6d7c1851b4cbb, 0x5d6ff49fa70b9c782399506a22a85193151b9b691245cebafd2063012443c132, 0x4b6c36debaedefb7b2d71b0503ffdc00150aaffd42e63358238ec888901738b8 -> # txhash: 0x7085c586686d666e8bb6e9477a0f0b09565b2060a11f1c4209d3a52295033832 # // ~ emit DepositEvent(bytes,bytes,bytes,bytes,bytes): 0xa0, 0x0100, 0x0140, 0x0180, 0x0200, 0x30, 0x933ad9491b62059dd065b560d256d8957a8c402cc6e8d8ee7290ae11e8f73292, 0x67a8811c397529dac52ae1342ba58c9500000000000000000000000000000000, 0x20, 0xf50428677c60f997aadeab24aabf7fceaef491c96a52b463ae91f95611cf71, 0x08, 0xca9a3b00000000000000000000000000000000000000000000000000000000, 0x60, 0xa29d01cc8c6296a8150e515b5995390ef841dc18948aa3e79be6d7c1851b4cbb, 0x5d6ff49fa70b9c782399506a22a85193151b9b691245cebafd2063012443c132, 0x4b6c36debaedefb7b2d71b0503ffdc00150aaffd42e63358238ec888901738b8, 0x08, 0x00 // get_deposit_root() -> 0x2089653123d9c721215120b6db6738ba273bbc5228ac093b1f983badcdc8a438 -// gas irOptimized: 122606 +// gas irOptimized: 122143 // gas legacy: 150475 -// gas legacyOptimized: 122811 +// gas legacyOptimized: 122483 // get_deposit_count() -> 0x20, 8, 0x0100000000000000000000000000000000000000000000000000000000000000 // deposit(bytes,bytes,bytes,bytes32), 32 ether: 0x80, 0xe0, 0x120, 0xdbd986dc85ceb382708cf90a3500f500f0a393c5ece76963ac3ed72eccd2c301, 0x30, 0xb2ce0f79f90e7b3a113ca5783c65756f96c4b4673c2b5c1eb4efc22280259441, 0x06d601211e8866dc5b50dc48a244dd7c00000000000000000000000000000000, 0x20, 0x00344b6c73f71b11c56aba0d01b7d8ad83559f209d0a4101a515f6ad54c89771, 0x60, 0x945caaf82d18e78c033927d51f452ebcd76524497b91d7a11219cb3db6a1d369, 0x7595fc095ce489e46b2ef129591f2f6d079be4faaf345a02c5eb133c072e7c56, 0x0c6c3617eee66b4b878165c502357d49485326bc6b31bc96873f308c8f19c09d -> # txhash: 0x404d8e109822ce448e68f45216c12cb051b784d068fbe98317ab8e50c58304ac # // ~ emit DepositEvent(bytes,bytes,bytes,bytes,bytes): 0xa0, 0x0100, 0x0140, 0x0180, 0x0200, 0x30, 0xb2ce0f79f90e7b3a113ca5783c65756f96c4b4673c2b5c1eb4efc22280259441, 0x06d601211e8866dc5b50dc48a244dd7c00000000000000000000000000000000, 0x20, 0x344b6c73f71b11c56aba0d01b7d8ad83559f209d0a4101a515f6ad54c89771, 0x08, 0x40597307000000000000000000000000000000000000000000000000000000, 0x60, 0x945caaf82d18e78c033927d51f452ebcd76524497b91d7a11219cb3db6a1d369, 0x7595fc095ce489e46b2ef129591f2f6d079be4faaf345a02c5eb133c072e7c56, 0x0c6c3617eee66b4b878165c502357d49485326bc6b31bc96873f308c8f19c09d, 0x08, 0x0100000000000000000000000000000000000000000000000000000000000000 // get_deposit_root() -> 0x40255975859377d912c53aa853245ebd939bdd2b33a28e084babdcc1ed8238ee -// gas irOptimized: 122606 +// gas irOptimized: 122143 // gas legacy: 150475 -// gas legacyOptimized: 122811 +// gas legacyOptimized: 122483 // get_deposit_count() -> 0x20, 8, 0x0200000000000000000000000000000000000000000000000000000000000000 diff --git a/test/libsolidity/semanticTests/externalContracts/prbmath_signed.sol b/test/libsolidity/semanticTests/externalContracts/prbmath_signed.sol index 77be50301..d63ba0c41 100644 --- a/test/libsolidity/semanticTests/externalContracts/prbmath_signed.sol +++ b/test/libsolidity/semanticTests/externalContracts/prbmath_signed.sol @@ -50,46 +50,46 @@ contract test { // compileViaYul: also // ---- // constructor() -// gas irOptimized: 1965559 +// gas irOptimized: 1924584 // gas legacy: 2602700 -// gas legacyOptimized: 1874490 +// gas legacyOptimized: 1871526 // div(int256,int256): 3141592653589793238, 88714123 -> 35412542528203691288251815328 -// gas irOptimized: 22244 +// gas irOptimized: 22137 // gas legacy: 22767 -// gas legacyOptimized: 22282 +// gas legacyOptimized: 22266 // exp(int256): 3141592653589793238 -> 23140692632779268978 -// gas irOptimized: 24358 +// gas irOptimized: 24545 // gas legacy: 25203 -// gas legacyOptimized: 24357 +// gas legacyOptimized: 24346 // exp2(int256): 3141592653589793238 -> 8824977827076287620 -// gas irOptimized: 24125 +// gas irOptimized: 24257 // gas legacy: 24864 -// gas legacyOptimized: 24110 +// gas legacyOptimized: 24099 // gm(int256,int256): 3141592653589793238, 88714123 -> 16694419339601 -// gas irOptimized: 23057 +// gas irOptimized: 22970 // gas legacy: 23228 -// gas legacyOptimized: 22683 +// gas legacyOptimized: 22667 // log10(int256): 3141592653589793238 -> 4971498726941338506 -// gas irOptimized: 30112 +// gas irOptimized: 30609 // gas legacy: 32934 -// gas legacyOptimized: 30323 +// gas legacyOptimized: 30303 // log2(int256): 3141592653589793238 -> 1651496129472318782 -// gas irOptimized: 28300 +// gas irOptimized: 28819 // gas legacy: 31067 -// gas legacyOptimized: 28426 +// gas legacyOptimized: 28406 // mul(int256,int256): 3141592653589793238, 88714123 -> 278703637 -// gas irOptimized: 22335 +// gas irOptimized: 22225 // gas legacy: 22807 -// gas legacyOptimized: 22295 +// gas legacyOptimized: 22279 // pow(int256,uint256): 3141592653589793238, 5 -> 306019684785281453040 -// gas irOptimized: 22861 +// gas irOptimized: 22635 // gas legacy: 23508 -// gas legacyOptimized: 22921 +// gas legacyOptimized: 22905 // sqrt(int256): 3141592653589793238 -> 1772453850905516027 -// gas irOptimized: 22702 +// gas irOptimized: 22650 // gas legacy: 22802 -// gas legacyOptimized: 22422 +// gas legacyOptimized: 22411 // benchmark(int256): 3141592653589793238 -> 998882724338592125, 1000000000000000000, 1000000000000000000 -// gas irOptimized: 37899 +// gas irOptimized: 36630 // gas legacy: 36673 -// gas legacyOptimized: 34729 +// gas legacyOptimized: 34658 diff --git a/test/libsolidity/semanticTests/externalContracts/prbmath_unsigned.sol b/test/libsolidity/semanticTests/externalContracts/prbmath_unsigned.sol index b15cf5deb..90cb413db 100644 --- a/test/libsolidity/semanticTests/externalContracts/prbmath_unsigned.sol +++ b/test/libsolidity/semanticTests/externalContracts/prbmath_unsigned.sol @@ -50,46 +50,46 @@ contract test { // compileViaYul: also // ---- // constructor() -// gas irOptimized: 1770739 +// gas irOptimized: 1778558 // gas legacy: 2356230 -// gas legacyOptimized: 1746528 +// gas legacyOptimized: 1741613 // div(uint256,uint256): 3141592653589793238, 88714123 -> 35412542528203691288251815328 -// gas irOptimized: 22047 +// gas irOptimized: 22004 // gas legacy: 22497 -// gas legacyOptimized: 22010 +// gas legacyOptimized: 21994 // exp(uint256): 3141592653589793238 -> 23140692632779268978 -// gas irOptimized: 24245 +// gas irOptimized: 24444 // gas legacy: 25104 -// gas legacyOptimized: 24258 +// gas legacyOptimized: 24247 // exp2(uint256): 3141592653589793238 -> 8824977827076287620 -// gas irOptimized: 24063 +// gas irOptimized: 24198 // gas legacy: 24814 -// gas legacyOptimized: 24062 +// gas legacyOptimized: 24051 // gm(uint256,uint256): 3141592653589793238, 88714123 -> 16694419339601 -// gas irOptimized: 23036 +// gas irOptimized: 22950 // gas legacy: 23269 -// gas legacyOptimized: 22724 +// gas legacyOptimized: 22708 // log10(uint256): 3141592653589793238 -> 0x44fe4fc084a52b8a -// gas irOptimized: 29892 +// gas irOptimized: 30269 // gas legacy: 32898 -// gas legacyOptimized: 29925 +// gas legacyOptimized: 29905 // log2(uint256): 3141592653589793238 -> 1651496129472318782 -// gas irOptimized: 27822 +// gas irOptimized: 28235 // gas legacy: 30986 -// gas legacyOptimized: 28001 +// gas legacyOptimized: 27981 // mul(uint256,uint256): 3141592653589793238, 88714123 -> 278703637 -// gas irOptimized: 22094 +// gas irOptimized: 22048 // gas legacy: 22604 -// gas legacyOptimized: 22090 +// gas legacyOptimized: 22074 // pow(uint256,uint256): 3141592653589793238, 5 -> 306019684785281453040 -// gas irOptimized: 22565 +// gas irOptimized: 22406 // gas legacy: 23245 -// gas legacyOptimized: 22646 +// gas legacyOptimized: 22630 // sqrt(uint256): 3141592653589793238 -> 1772453850905516027 -// gas irOptimized: 22720 +// gas irOptimized: 22672 // gas legacy: 22820 -// gas legacyOptimized: 22440 +// gas legacyOptimized: 22429 // benchmark(uint256): 3141592653589793238 -> 998882724338592125, 1000000000000000000, 1000000000000000000 -// gas irOptimized: 36587 +// gas irOptimized: 35603 // gas legacy: 35385 -// gas legacyOptimized: 33449 +// gas legacyOptimized: 33378 diff --git a/test/libsolidity/semanticTests/externalContracts/ramanujan_pi.sol b/test/libsolidity/semanticTests/externalContracts/ramanujan_pi.sol index a2ff8bd75..3de37ee97 100644 --- a/test/libsolidity/semanticTests/externalContracts/ramanujan_pi.sol +++ b/test/libsolidity/semanticTests/externalContracts/ramanujan_pi.sol @@ -35,10 +35,10 @@ contract test { // compileViaYul: also // ---- // constructor() -// gas irOptimized: 500656 +// gas irOptimized: 465861 // gas legacy: 733634 -// gas legacyOptimized: 478742 +// gas legacyOptimized: 481376 // prb_pi() -> 3141592656369545286 -// gas irOptimized: 63037 +// gas irOptimized: 57482 // gas legacy: 98903 -// gas legacyOptimized: 75735 +// gas legacyOptimized: 74312 diff --git a/test/libsolidity/semanticTests/externalContracts/snark.sol b/test/libsolidity/semanticTests/externalContracts/snark.sol index 7a7b95695..1dc9eade6 100644 --- a/test/libsolidity/semanticTests/externalContracts/snark.sol +++ b/test/libsolidity/semanticTests/externalContracts/snark.sol @@ -297,6 +297,6 @@ contract Test { // pair() -> true // verifyTx() -> true // ~ emit Verified(string): 0x20, 0x16, "Successfully verified." -// gas irOptimized: 101054 +// gas irOptimized: 95573 // gas legacy: 114094 -// gas legacyOptimized: 83670 +// gas legacyOptimized: 82029 diff --git a/test/libsolidity/semanticTests/externalContracts/strings.sol b/test/libsolidity/semanticTests/externalContracts/strings.sol index b20d53f29..def15dca0 100644 --- a/test/libsolidity/semanticTests/externalContracts/strings.sol +++ b/test/libsolidity/semanticTests/externalContracts/strings.sol @@ -51,26 +51,26 @@ contract test { // compileViaYul: also // ---- // constructor() -// gas irOptimized: 776466 +// gas irOptimized: 709526 // gas legacy: 1188228 -// gas legacyOptimized: 749336 +// gas legacyOptimized: 735032 // toSlice(string): 0x20, 11, "hello world" -> 11, 0xa0 -// gas irOptimized: 22723 +// gas irOptimized: 22660 // gas legacy: 23190 -// gas legacyOptimized: 22508 +// gas legacyOptimized: 22449 // roundtrip(string): 0x20, 11, "hello world" -> 0x20, 11, "hello world" -// gas irOptimized: 23513 +// gas irOptimized: 23408 // gas legacy: 23820 -// gas legacyOptimized: 23123 +// gas legacyOptimized: 23072 // utf8len(string): 0x20, 16, "\xf0\x9f\x98\x83\xf0\x9f\x98\x83\xf0\x9f\x98\x83\xf0\x9f\x98\x83" -> 4 # Input: "😃😃😃😃" # -// gas irOptimized: 24266 +// gas irOptimized: 24026 // gas legacy: 25716 -// gas legacyOptimized: 24115 +// gas legacyOptimized: 23978 // multiconcat(string,uint256): 0x40, 3, 11, "hello world" -> 0x20, 0x58, 0x68656c6c6f20776f726c6468656c6c6f20776f726c6468656c6c6f20776f726c, 0x6468656c6c6f20776f726c6468656c6c6f20776f726c6468656c6c6f20776f72, 49027192869463622675296414541903001712009715982962058146354235762728281047040 # concatenating 3 times # -// gas irOptimized: 28962 +// gas irOptimized: 28449 // gas legacy: 31621 -// gas legacyOptimized: 27914 +// gas legacyOptimized: 27691 // benchmark(string,bytes32): 0x40, 0x0842021, 8, "solidity" -> 0x2020 -// gas irOptimized: 2235661 +// gas irOptimized: 2040097 // gas legacy: 4381235 -// gas legacyOptimized: 2317529 +// gas legacyOptimized: 2166117 diff --git a/test/libsolidity/semanticTests/functionCall/failed_create.sol b/test/libsolidity/semanticTests/functionCall/failed_create.sol index b4e7efbb5..b993fecda 100644 --- a/test/libsolidity/semanticTests/functionCall/failed_create.sol +++ b/test/libsolidity/semanticTests/functionCall/failed_create.sol @@ -18,17 +18,17 @@ contract C { // compileViaYul: also // ---- // constructor(), 20 wei -// gas irOptimized: 219233 +// gas irOptimized: 220113 // gas legacy: 288299 -// gas legacyOptimized: 177933 +// gas legacyOptimized: 174543 // f(uint256): 20 -> 1370859564726510389319704988634906228201275401179 // x() -> 1 // f(uint256): 20 -> FAILURE // x() -> 1 // stack(uint256): 1023 -> FAILURE -// gas irOptimized: 349023 +// gas irOptimized: 345821 // gas legacy: 535367 -// gas legacyOptimized: 354656 +// gas legacyOptimized: 349920 // x() -> 1 // stack(uint256): 10 -> 693016686122178122849713379390321835634789309880 // x() -> 2 diff --git a/test/libsolidity/semanticTests/functionCall/mapping_array_internal_argument.sol b/test/libsolidity/semanticTests/functionCall/mapping_array_internal_argument.sol index 5d4f25a39..c9dc4a321 100644 --- a/test/libsolidity/semanticTests/functionCall/mapping_array_internal_argument.sol +++ b/test/libsolidity/semanticTests/functionCall/mapping_array_internal_argument.sol @@ -20,9 +20,9 @@ contract test { // compileViaYul: also // ---- // set(uint8,uint8,uint8,uint8,uint8): 1, 21, 22, 42, 43 -> 0, 0, 0, 0 -// gas irOptimized: 112020 +// gas irOptimized: 111450 // gas legacy: 113806 -// gas legacyOptimized: 111781 +// gas legacyOptimized: 111700 // get(uint8): 1 -> 21, 22, 42, 43 // set(uint8,uint8,uint8,uint8,uint8): 1, 10, 30, 11, 31 -> 21, 22, 42, 43 // get(uint8): 1 -> 10, 30, 11, 31 diff --git a/test/libsolidity/semanticTests/functionTypes/store_function.sol b/test/libsolidity/semanticTests/functionTypes/store_function.sol index 26f90dd89..535f1589a 100644 --- a/test/libsolidity/semanticTests/functionTypes/store_function.sol +++ b/test/libsolidity/semanticTests/functionTypes/store_function.sol @@ -28,6 +28,6 @@ contract C { // compileViaYul: also // ---- // t() -> 9 -// gas irOptimized: 99004 +// gas irOptimized: 99186 // gas legacy: 158997 -// gas legacyOptimized: 108916 +// gas legacyOptimized: 108067 diff --git a/test/libsolidity/semanticTests/immutable/multi_creation.sol b/test/libsolidity/semanticTests/immutable/multi_creation.sol index a18306984..aef9c0631 100644 --- a/test/libsolidity/semanticTests/immutable/multi_creation.sol +++ b/test/libsolidity/semanticTests/immutable/multi_creation.sol @@ -29,8 +29,8 @@ contract C { // compileViaYul: also // ---- // f() -> 3, 7, 5 -// gas irOptimized: 127613 +// gas irOptimized: 127592 // gas legacy: 151590 -// gas legacyOptimized: 125422 +// gas legacyOptimized: 125400 // x() -> 7 // y() -> 5 diff --git a/test/libsolidity/semanticTests/inheritance/address_overload_resolution.sol b/test/libsolidity/semanticTests/inheritance/address_overload_resolution.sol index ca6bd0ca6..e76016137 100644 --- a/test/libsolidity/semanticTests/inheritance/address_overload_resolution.sol +++ b/test/libsolidity/semanticTests/inheritance/address_overload_resolution.sol @@ -23,8 +23,8 @@ contract D { // compileViaYul: also // ---- // f() -> 1 -// gas irOptimized: 78722 +// gas irOptimized: 77164 // gas legacy: 115012 // g() -> 5 -// gas irOptimized: 78811 +// gas irOptimized: 77231 // gas legacy: 115472 diff --git a/test/libsolidity/semanticTests/inheritance/inherited_function_calldata_calldata_interface.sol b/test/libsolidity/semanticTests/inheritance/inherited_function_calldata_calldata_interface.sol index 85b1fca3b..e012accaf 100644 --- a/test/libsolidity/semanticTests/inheritance/inherited_function_calldata_calldata_interface.sol +++ b/test/libsolidity/semanticTests/inheritance/inherited_function_calldata_calldata_interface.sol @@ -25,5 +25,5 @@ contract B { // compileViaYul: also // ---- // g() -> 42 -// gas irOptimized: 84629 +// gas irOptimized: 80945 // gas legacy: 125609 diff --git a/test/libsolidity/semanticTests/inheritance/inherited_function_calldata_memory_interface.sol b/test/libsolidity/semanticTests/inheritance/inherited_function_calldata_memory_interface.sol index c78627cbc..d09445407 100644 --- a/test/libsolidity/semanticTests/inheritance/inherited_function_calldata_memory_interface.sol +++ b/test/libsolidity/semanticTests/inheritance/inherited_function_calldata_memory_interface.sol @@ -25,6 +25,6 @@ contract B { // compileViaYul: also // ---- // g() -> 42 -// gas irOptimized: 110833 +// gas irOptimized: 113564 // gas legacy: 186609 -// gas legacyOptimized: 116151 +// gas legacyOptimized: 117867 diff --git a/test/libsolidity/semanticTests/inlineAssembly/keccak_yul_optimization.sol b/test/libsolidity/semanticTests/inlineAssembly/keccak_yul_optimization.sol index 88ead1eb3..85a93b3dc 100644 --- a/test/libsolidity/semanticTests/inlineAssembly/keccak_yul_optimization.sol +++ b/test/libsolidity/semanticTests/inlineAssembly/keccak_yul_optimization.sol @@ -26,10 +26,10 @@ contract C { // compileViaYul: also // ---- // f() -> 0xcdb56c384a9682c600315e3470157a4cf7638d0d33e9dae5c40ffd2644fc5a80 -// gas irOptimized: 22306 +// gas irOptimized: 22239 // gas legacy: 23385 // gas legacyOptimized: 23092 // g() -> 0xcdb56c384a9682c600315e3470157a4cf7638d0d33e9dae5c40ffd2644fc5a80 -// gas irOptimized: 21287 +// gas irOptimized: 21277 // gas legacy: 21462 // gas legacyOptimized: 21256 diff --git a/test/libsolidity/semanticTests/interface_inheritance_conversions.sol b/test/libsolidity/semanticTests/interface_inheritance_conversions.sol index 70f52d4c6..11cb93832 100644 --- a/test/libsolidity/semanticTests/interface_inheritance_conversions.sol +++ b/test/libsolidity/semanticTests/interface_inheritance_conversions.sol @@ -37,10 +37,10 @@ contract C { // compileViaYul: also // ---- // convertParent() -> 1 -// gas irOptimized: 87655 +// gas irOptimized: 85640 // convertSubA() -> 1, 2 -// gas irOptimized: 88451 +// gas irOptimized: 86395 // gas legacy: 99303 // convertSubB() -> 1, 3 -// gas irOptimized: 88385 +// gas irOptimized: 86338 // gas legacy: 99237 diff --git a/test/libsolidity/semanticTests/salted_create/salted_create.sol b/test/libsolidity/semanticTests/salted_create/salted_create.sol index 064159de3..5374d2352 100644 --- a/test/libsolidity/semanticTests/salted_create/salted_create.sol +++ b/test/libsolidity/semanticTests/salted_create/salted_create.sol @@ -22,6 +22,6 @@ contract A { // ---- // different_salt() -> true // same_salt() -> true -// gas irOptimized: 98438948 +// gas irOptimized: 98438914 // gas legacy: 98439116 // gas legacyOptimized: 98438970 diff --git a/test/libsolidity/semanticTests/salted_create/salted_create_with_value.sol b/test/libsolidity/semanticTests/salted_create/salted_create_with_value.sol index fefd988d7..d26e6eb26 100644 --- a/test/libsolidity/semanticTests/salted_create/salted_create_with_value.sol +++ b/test/libsolidity/semanticTests/salted_create/salted_create_with_value.sol @@ -22,6 +22,6 @@ contract A { // compileViaYul: also // ---- // f(), 10 ether -> 3007, 3008, 3009 -// gas irOptimized: 270255 +// gas irOptimized: 273287 // gas legacy: 422627 -// gas legacyOptimized: 287856 +// gas legacyOptimized: 288336 diff --git a/test/libsolidity/semanticTests/storage/packed_storage_structs_bytes.sol b/test/libsolidity/semanticTests/storage/packed_storage_structs_bytes.sol index 2fdff6c56..caa385887 100644 --- a/test/libsolidity/semanticTests/storage/packed_storage_structs_bytes.sol +++ b/test/libsolidity/semanticTests/storage/packed_storage_structs_bytes.sol @@ -46,6 +46,6 @@ contract C { // compileViaYul: also // ---- // test() -> true -// gas irOptimized: 135141 +// gas irOptimized: 134587 // gas legacy: 136036 // gas legacyOptimized: 133480 diff --git a/test/libsolidity/semanticTests/structs/calldata/calldata_struct_with_nested_array_to_storage.sol b/test/libsolidity/semanticTests/structs/calldata/calldata_struct_with_nested_array_to_storage.sol index 96dd48904..25cdd461d 100644 --- a/test/libsolidity/semanticTests/structs/calldata/calldata_struct_with_nested_array_to_storage.sol +++ b/test/libsolidity/semanticTests/structs/calldata/calldata_struct_with_nested_array_to_storage.sol @@ -18,6 +18,6 @@ contract C { // compileViaYul: also // ---- // f(uint32,(uint128,uint256[][2],uint32)): 55, 0x40, 77, 0x60, 88, 0x40, 0x40, 2, 1, 2 -> 55, 77, 1, 2, 88 -// gas irOptimized: 203716 +// gas irOptimized: 203397 // gas legacy: 208666 -// gas legacyOptimized: 203583 +// gas legacyOptimized: 203350 diff --git a/test/libsolidity/semanticTests/structs/conversion/recursive_storage_memory.sol b/test/libsolidity/semanticTests/structs/conversion/recursive_storage_memory.sol index 93b63ff5c..f545484f7 100644 --- a/test/libsolidity/semanticTests/structs/conversion/recursive_storage_memory.sol +++ b/test/libsolidity/semanticTests/structs/conversion/recursive_storage_memory.sol @@ -25,6 +25,6 @@ contract CopyTest { // compileViaYul: also // ---- // run() -> 2, 23, 42 -// gas irOptimized: 195077 +// gas irOptimized: 193170 // gas legacy: 186016 // gas legacyOptimized: 184668 diff --git a/test/libsolidity/semanticTests/structs/memory_structs_nested_load.sol b/test/libsolidity/semanticTests/structs/memory_structs_nested_load.sol index f48c54807..12ec4ca18 100644 --- a/test/libsolidity/semanticTests/structs/memory_structs_nested_load.sol +++ b/test/libsolidity/semanticTests/structs/memory_structs_nested_load.sol @@ -69,7 +69,7 @@ contract Test { // compileViaYul: also // ---- // load() -> 0x01, 0x02, 0x03, 0x04, 0x05, 0x06 -// gas irOptimized: 111174 +// gas irOptimized: 111179 // gas legacy: 112999 // gas legacyOptimized: 110881 // store() -> 0x01, 0x02, 0x03, 0x04, 0x05, 0x06 diff --git a/test/libsolidity/semanticTests/structs/struct_containing_bytes_copy_and_delete.sol b/test/libsolidity/semanticTests/structs/struct_containing_bytes_copy_and_delete.sol index 070fcf920..6f486bed2 100644 --- a/test/libsolidity/semanticTests/structs/struct_containing_bytes_copy_and_delete.sol +++ b/test/libsolidity/semanticTests/structs/struct_containing_bytes_copy_and_delete.sol @@ -25,9 +25,9 @@ contract c { // ---- // storageEmpty -> 1 // set(uint256,bytes,uint256): 12, 0x60, 13, 33, "12345678901234567890123456789012", "3" -> true -// gas irOptimized: 133819 +// gas irOptimized: 133752 // gas legacy: 134436 -// gas legacyOptimized: 133879 +// gas legacyOptimized: 133811 // test(uint256): 32 -> "3" // storageEmpty -> 0 // copy() -> true diff --git a/test/libsolidity/semanticTests/structs/struct_copy.sol b/test/libsolidity/semanticTests/structs/struct_copy.sol index ccaaeaa52..6c03c8895 100644 --- a/test/libsolidity/semanticTests/structs/struct_copy.sol +++ b/test/libsolidity/semanticTests/structs/struct_copy.sol @@ -38,14 +38,14 @@ contract c { // compileViaYul: also // ---- // set(uint256): 7 -> true -// gas irOptimized: 109985 +// gas irOptimized: 110011 // gas legacy: 110616 -// gas legacyOptimized: 110006 +// gas legacyOptimized: 109995 // retrieve(uint256): 7 -> 1, 3, 4, 2 // copy(uint256,uint256): 7, 8 -> true -// gas irOptimized: 118701 +// gas irOptimized: 118707 // gas legacy: 119166 -// gas legacyOptimized: 118622 +// gas legacyOptimized: 118606 // retrieve(uint256): 7 -> 1, 3, 4, 2 // retrieve(uint256): 8 -> 1, 3, 4, 2 // copy(uint256,uint256): 0, 7 -> true diff --git a/test/libsolidity/semanticTests/structs/struct_copy_via_local.sol b/test/libsolidity/semanticTests/structs/struct_copy_via_local.sol index 441584a5e..21757ea40 100644 --- a/test/libsolidity/semanticTests/structs/struct_copy_via_local.sol +++ b/test/libsolidity/semanticTests/structs/struct_copy_via_local.sol @@ -21,6 +21,6 @@ contract c { // compileViaYul: also // ---- // test() -> true -// gas irOptimized: 110144 +// gas irOptimized: 110186 // gas legacy: 110627 // gas legacyOptimized: 109706 diff --git a/test/libsolidity/semanticTests/structs/struct_delete_storage_nested_small.sol b/test/libsolidity/semanticTests/structs/struct_delete_storage_nested_small.sol index b0e6b7b10..b1aeec2cf 100644 --- a/test/libsolidity/semanticTests/structs/struct_delete_storage_nested_small.sol +++ b/test/libsolidity/semanticTests/structs/struct_delete_storage_nested_small.sol @@ -33,4 +33,4 @@ contract C { // compileViaYul: true // ---- // f() -> 0, 0, 0 -// gas irOptimized: 117648 +// gas irOptimized: 117505 diff --git a/test/libsolidity/semanticTests/structs/struct_delete_storage_with_array.sol b/test/libsolidity/semanticTests/structs/struct_delete_storage_with_array.sol index 14e170a4c..e759520b4 100644 --- a/test/libsolidity/semanticTests/structs/struct_delete_storage_with_array.sol +++ b/test/libsolidity/semanticTests/structs/struct_delete_storage_with_array.sol @@ -44,7 +44,7 @@ contract C { // compileViaYul: also // ---- // f() -> -// gas irOptimized: 121704 +// gas irOptimized: 121618 // gas legacy: 122132 // gas legacyOptimized: 121500 // g() -> diff --git a/test/libsolidity/semanticTests/structs/struct_delete_storage_with_arrays_small.sol b/test/libsolidity/semanticTests/structs/struct_delete_storage_with_arrays_small.sol index 6425c0d37..6f88df394 100644 --- a/test/libsolidity/semanticTests/structs/struct_delete_storage_with_arrays_small.sol +++ b/test/libsolidity/semanticTests/structs/struct_delete_storage_with_arrays_small.sol @@ -27,4 +27,4 @@ contract C { // compileViaYul: true // ---- // f() -> 0 -// gas irOptimized: 112160 +// gas irOptimized: 111896 diff --git a/test/libsolidity/semanticTests/structs/struct_memory_to_storage_function_ptr.sol b/test/libsolidity/semanticTests/structs/struct_memory_to_storage_function_ptr.sol index caa2b693f..fe791a68d 100644 --- a/test/libsolidity/semanticTests/structs/struct_memory_to_storage_function_ptr.sol +++ b/test/libsolidity/semanticTests/structs/struct_memory_to_storage_function_ptr.sol @@ -32,6 +32,6 @@ contract C { // compileViaYul: also // ---- // f() -> 42, 23, 34, 42, 42 -// gas irOptimized: 110592 +// gas irOptimized: 110966 // gas legacy: 112021 // gas legacyOptimized: 110548 diff --git a/test/libsolidity/semanticTests/structs/structs.sol b/test/libsolidity/semanticTests/structs/structs.sol index 46b596e39..b56a2ec22 100644 --- a/test/libsolidity/semanticTests/structs/structs.sol +++ b/test/libsolidity/semanticTests/structs/structs.sol @@ -32,7 +32,7 @@ contract test { // ---- // check() -> false // set() -> -// gas irOptimized: 134389 +// gas irOptimized: 134335 // gas legacy: 135277 // gas legacyOptimized: 134064 // check() -> true diff --git a/test/libsolidity/semanticTests/various/destructuring_assignment.sol b/test/libsolidity/semanticTests/various/destructuring_assignment.sol index b8a314d32..dac82a494 100644 --- a/test/libsolidity/semanticTests/various/destructuring_assignment.sol +++ b/test/libsolidity/semanticTests/various/destructuring_assignment.sol @@ -36,6 +36,6 @@ contract C { // compileViaYul: also // ---- // f(bytes): 0x20, 0x5, "abcde" -> 0 -// gas irOptimized: 240334 +// gas irOptimized: 240685 // gas legacy: 240358 -// gas legacyOptimized: 239682 +// gas legacyOptimized: 239619 diff --git a/test/libsolidity/semanticTests/various/erc20.sol b/test/libsolidity/semanticTests/various/erc20.sol index 61c1f0bab..a32073b7e 100644 --- a/test/libsolidity/semanticTests/various/erc20.sol +++ b/test/libsolidity/semanticTests/various/erc20.sol @@ -98,33 +98,33 @@ contract ERC20 { // ---- // constructor() // ~ emit Transfer(address,address,uint256): #0x00, #0x1212121212121212121212121212120000000012, 0x14 -// gas irOptimized: 460447 +// gas irOptimized: 438139 // gas legacy: 833310 -// gas legacyOptimized: 416135 +// gas legacyOptimized: 401952 // totalSupply() -> 20 -// gas irOptimized: 23378 +// gas irOptimized: 23415 // gas legacy: 23524 // gas legacyOptimized: 23368 // transfer(address,uint256): 2, 5 -> true // ~ emit Transfer(address,address,uint256): #0x1212121212121212121212121212120000000012, #0x02, 0x05 -// gas irOptimized: 48514 +// gas irOptimized: 48482 // gas legacy: 49317 -// gas legacyOptimized: 48491 +// gas legacyOptimized: 48448 // decreaseAllowance(address,uint256): 2, 0 -> true // ~ emit Approval(address,address,uint256): #0x1212121212121212121212121212120000000012, #0x02, 0x00 -// gas irOptimized: 26316 +// gas irOptimized: 26275 // gas legacy: 27012 -// gas legacyOptimized: 26275 +// gas legacyOptimized: 26241 // decreaseAllowance(address,uint256): 2, 1 -> FAILURE, hex"4e487b71", 0x11 -// gas irOptimized: 24040 +// gas irOptimized: 24042 // gas legacy: 24467 -// gas legacyOptimized: 24056 +// gas legacyOptimized: 24028 // transfer(address,uint256): 2, 14 -> true // ~ emit Transfer(address,address,uint256): #0x1212121212121212121212121212120000000012, #0x02, 0x0e -// gas irOptimized: 28614 +// gas irOptimized: 28582 // gas legacy: 29417 -// gas legacyOptimized: 28591 +// gas legacyOptimized: 28548 // transfer(address,uint256): 2, 2 -> FAILURE, hex"4e487b71", 0x11 -// gas irOptimized: 24052 +// gas irOptimized: 24071 // gas legacy: 24453 -// gas legacyOptimized: 24053 +// gas legacyOptimized: 24025 diff --git a/test/libsolidity/semanticTests/various/skip_dynamic_types_for_structs.sol b/test/libsolidity/semanticTests/various/skip_dynamic_types_for_structs.sol index a8e9ce1ed..8475673a9 100644 --- a/test/libsolidity/semanticTests/various/skip_dynamic_types_for_structs.sol +++ b/test/libsolidity/semanticTests/various/skip_dynamic_types_for_structs.sol @@ -22,6 +22,6 @@ contract C { // compileViaYul: also // ---- // g() -> 2, 6 -// gas irOptimized: 178952 +// gas irOptimized: 178953 // gas legacy: 180890 -// gas legacyOptimized: 179609 +// gas legacyOptimized: 179536 diff --git a/test/libsolidity/semanticTests/various/staticcall_for_view_and_pure.sol b/test/libsolidity/semanticTests/various/staticcall_for_view_and_pure.sol index 33afcb66f..ab6d6e59a 100644 --- a/test/libsolidity/semanticTests/various/staticcall_for_view_and_pure.sol +++ b/test/libsolidity/semanticTests/various/staticcall_for_view_and_pure.sol @@ -38,10 +38,10 @@ contract D { // f() -> 0x1 # This should work, next should throw # // gas legacy: 103844 // fview() -> FAILURE -// gas irOptimized: 98438630 +// gas irOptimized: 98438627 // gas legacy: 98438803 // gas legacyOptimized: 98438596 // fpure() -> FAILURE -// gas irOptimized: 98438630 +// gas irOptimized: 98438627 // gas legacy: 98438803 // gas legacyOptimized: 98438597 diff --git a/test/libsolidity/semanticTests/various/swap_in_storage_overwrite.sol b/test/libsolidity/semanticTests/various/swap_in_storage_overwrite.sol index 12e491968..c8398b2bf 100644 --- a/test/libsolidity/semanticTests/various/swap_in_storage_overwrite.sol +++ b/test/libsolidity/semanticTests/various/swap_in_storage_overwrite.sol @@ -30,7 +30,7 @@ contract c { // x() -> 0, 0 // y() -> 0, 0 // set() -> -// gas irOptimized: 109734 +// gas irOptimized: 109733 // gas legacy: 109732 // gas legacyOptimized: 109682 // x() -> 1, 2 diff --git a/test/libsolidity/semanticTests/viaYul/array_memory_index_access.sol b/test/libsolidity/semanticTests/viaYul/array_memory_index_access.sol index 83aefbc61..de9539cd6 100644 --- a/test/libsolidity/semanticTests/viaYul/array_memory_index_access.sol +++ b/test/libsolidity/semanticTests/viaYul/array_memory_index_access.sol @@ -28,9 +28,9 @@ contract C { // index(uint256): 10 -> true // index(uint256): 20 -> true // index(uint256): 0xFF -> true -// gas irOptimized: 151952 +// gas irOptimized: 138441 // gas legacy: 248854 -// gas legacyOptimized: 152638 +// gas legacyOptimized: 144977 // accessIndex(uint256,int256): 10, 1 -> 2 // accessIndex(uint256,int256): 10, 0 -> 1 // accessIndex(uint256,int256): 10, 11 -> FAILURE, hex"4e487b71", 0x32 diff --git a/test/libsolidity/semanticTests/viaYul/array_storage_index_access.sol b/test/libsolidity/semanticTests/viaYul/array_storage_index_access.sol index 5241f29c0..817309a4f 100644 --- a/test/libsolidity/semanticTests/viaYul/array_storage_index_access.sol +++ b/test/libsolidity/semanticTests/viaYul/array_storage_index_access.sol @@ -18,33 +18,33 @@ contract C { // ---- // test_indices(uint256): 1 -> // test_indices(uint256): 129 -> -// gas irOptimized: 3041780 +// gas irOptimized: 3032986 // gas legacy: 3071205 -// gas legacyOptimized: 3011873 +// gas legacyOptimized: 3007992 // test_indices(uint256): 5 -> -// gas irOptimized: 368208 +// gas irOptimized: 367642 // gas legacy: 369241 -// gas legacyOptimized: 366149 +// gas legacyOptimized: 365988 // test_indices(uint256): 10 -> // test_indices(uint256): 15 -> -// gas irOptimized: 73803 +// gas irOptimized: 72860 // test_indices(uint256): 0xFF -> -// gas irOptimized: 3455818 +// gas irOptimized: 3438610 // gas legacy: 3514167 -// gas legacyOptimized: 3398107 +// gas legacyOptimized: 3390446 // test_indices(uint256): 1000 -> -// gas irOptimized: 18383600 +// gas irOptimized: 18318372 // gas legacy: 18617999 -// gas legacyOptimized: 18178944 +// gas legacyOptimized: 18148933 // test_indices(uint256): 129 -> -// gas irOptimized: 2742698 +// gas irOptimized: 2733570 // gas legacy: 2772735 -// gas legacyOptimized: 2716547 +// gas legacyOptimized: 2712666 // test_indices(uint256): 128 -> -// gas irOptimized: 434013 +// gas irOptimized: 426682 // gas legacy: 467272 -// gas legacyOptimized: 418424 +// gas legacyOptimized: 414573 // test_indices(uint256): 1 -> -// gas irOptimized: 363418 +// gas irOptimized: 363074 // gas legacy: 363407 -// gas legacyOptimized: 361811 +// gas legacyOptimized: 361770 diff --git a/test/libsolidity/semanticTests/viaYul/array_storage_index_boundary_test.sol b/test/libsolidity/semanticTests/viaYul/array_storage_index_boundary_test.sol index 4b377ec2d..12247b1cc 100644 --- a/test/libsolidity/semanticTests/viaYul/array_storage_index_boundary_test.sol +++ b/test/libsolidity/semanticTests/viaYul/array_storage_index_boundary_test.sol @@ -18,12 +18,12 @@ contract C { // test_boundary_check(uint256,uint256): 1, 1 -> FAILURE, hex"4e487b71", 0x32 // test_boundary_check(uint256,uint256): 10, 10 -> FAILURE, hex"4e487b71", 0x32 // test_boundary_check(uint256,uint256): 256, 256 -> FAILURE, hex"4e487b71", 0x32 -// gas irOptimized: 139319 +// gas irOptimized: 137849 // gas legacy: 131830 -// gas legacyOptimized: 112054 +// gas legacyOptimized: 112040 // test_boundary_check(uint256,uint256): 256, 255 -> 0 -// gas irOptimized: 141481 +// gas irOptimized: 140028 // gas legacy: 134149 -// gas legacyOptimized: 114233 +// gas legacyOptimized: 114217 // test_boundary_check(uint256,uint256): 256, 0xFFFF -> FAILURE, hex"4e487b71", 0x32 // test_boundary_check(uint256,uint256): 256, 2 -> 0 diff --git a/test/libsolidity/semanticTests/viaYul/array_storage_index_zeroed_test.sol b/test/libsolidity/semanticTests/viaYul/array_storage_index_zeroed_test.sol index 870f339fc..2471ef16c 100644 --- a/test/libsolidity/semanticTests/viaYul/array_storage_index_zeroed_test.sol +++ b/test/libsolidity/semanticTests/viaYul/array_storage_index_zeroed_test.sol @@ -54,18 +54,18 @@ contract C { // ---- // test_zeroed_indicies(uint256): 1 -> // test_zeroed_indicies(uint256): 5 -> -// gas irOptimized: 131736 +// gas irOptimized: 131197 // gas legacy: 132367 -// gas legacyOptimized: 129586 +// gas legacyOptimized: 129458 // test_zeroed_indicies(uint256): 10 -> -// gas irOptimized: 175795 +// gas irOptimized: 174805 // gas legacy: 177329 -// gas legacyOptimized: 172224 +// gas legacyOptimized: 171961 // test_zeroed_indicies(uint256): 15 -> -// gas irOptimized: 199485 +// gas irOptimized: 198055 // gas legacy: 201954 -// gas legacyOptimized: 194604 +// gas legacyOptimized: 194206 // test_zeroed_indicies(uint256): 0xFF -> -// gas irOptimized: 6123320 +// gas irOptimized: 6098185 // gas legacy: 6163149 -// gas legacyOptimized: 6029474 +// gas legacyOptimized: 6022596 diff --git a/test/libsolidity/semanticTests/viaYul/array_storage_length_access.sol b/test/libsolidity/semanticTests/viaYul/array_storage_length_access.sol index 47b75c08e..924fea26f 100644 --- a/test/libsolidity/semanticTests/viaYul/array_storage_length_access.sol +++ b/test/libsolidity/semanticTests/viaYul/array_storage_length_access.sol @@ -14,11 +14,11 @@ contract C { // set_get_length(uint256): 10 -> 10 // set_get_length(uint256): 20 -> 20 // set_get_length(uint256): 0xFF -> 0xFF -// gas irOptimized: 96934 +// gas irOptimized: 96690 // gas legacy: 126722 -// gas legacyOptimized: 107818 +// gas legacyOptimized: 107807 // set_get_length(uint256): 0xFFF -> 0xFFF -// gas irOptimized: 1221706 +// gas irOptimized: 1217857 // gas legacy: 1702119 -// gas legacyOptimized: 1398420 +// gas legacyOptimized: 1398409 // set_get_length(uint256): 0xFFFFF -> FAILURE # Out-of-gas # diff --git a/test/libsolidity/semanticTests/viaYul/array_storage_push_empty.sol b/test/libsolidity/semanticTests/viaYul/array_storage_push_empty.sol index 05970805f..d90b6c697 100644 --- a/test/libsolidity/semanticTests/viaYul/array_storage_push_empty.sol +++ b/test/libsolidity/semanticTests/viaYul/array_storage_push_empty.sol @@ -13,13 +13,13 @@ contract C { // compileViaYul: also // ---- // pushEmpty(uint256): 128 -// gas irOptimized: 414881 +// gas irOptimized: 412570 // gas legacy: 417287 -// gas legacyOptimized: 399048 +// gas legacyOptimized: 397885 // pushEmpty(uint256): 256 -// gas irOptimized: 706405 +// gas irOptimized: 702558 // gas legacy: 715083 -// gas legacyOptimized: 688908 +// gas legacyOptimized: 686593 // pushEmpty(uint256): 38869 -> FAILURE # out-of-gas # // gas irOptimized: 100000000 // gas legacy: 100000000 diff --git a/test/libsolidity/semanticTests/viaYul/array_storage_push_empty_length_address.sol b/test/libsolidity/semanticTests/viaYul/array_storage_push_empty_length_address.sol index 06e00f6db..858a4aed5 100644 --- a/test/libsolidity/semanticTests/viaYul/array_storage_push_empty_length_address.sol +++ b/test/libsolidity/semanticTests/viaYul/array_storage_push_empty_length_address.sol @@ -18,17 +18,17 @@ contract C { // set_get_length(uint256): 10 -> 10 // set_get_length(uint256): 20 -> 20 // set_get_length(uint256): 0 -> 0 -// gas irOptimized: 77961 +// gas irOptimized: 77628 // gas legacy: 77730 -// gas legacyOptimized: 77162 +// gas legacyOptimized: 77151 // set_get_length(uint256): 0xFF -> 0xFF -// gas irOptimized: 143348 +// gas irOptimized: 141805 // gas legacy: 678237 -// gas legacyOptimized: 115104 +// gas legacyOptimized: 115093 // set_get_length(uint256): 0xFFF -> 0xFFF -// gas irOptimized: 1824725 +// gas irOptimized: 1801672 // gas legacy: 9873774 -// gas legacyOptimized: 1398546 +// gas legacyOptimized: 1398535 // set_get_length(uint256): 0xFFFFF -> FAILURE # Out-of-gas # // gas irOptimized: 100000000 // gas legacyOptimized: 100000000 diff --git a/test/libsolidity/semanticTests/viaYul/array_storage_push_pop.sol b/test/libsolidity/semanticTests/viaYul/array_storage_push_pop.sol index 7cc1f9e54..6605334d3 100644 --- a/test/libsolidity/semanticTests/viaYul/array_storage_push_pop.sol +++ b/test/libsolidity/semanticTests/viaYul/array_storage_push_pop.sol @@ -15,15 +15,15 @@ contract C { // set_get_length(uint256): 1 -> 0 // set_get_length(uint256): 10 -> 0 // set_get_length(uint256): 20 -> 0 -// gas irOptimized: 86888 +// gas irOptimized: 86331 // gas legacy: 85822 -// gas legacyOptimized: 83608 +// gas legacyOptimized: 83597 // set_get_length(uint256): 0xFF -> 0 -// gas irOptimized: 828783 +// gas irOptimized: 821881 // gas legacy: 810327 -// gas legacyOptimized: 786258 +// gas legacyOptimized: 786247 // set_get_length(uint256): 0xFFF -> 0 -// gas irOptimized: 12951675 +// gas irOptimized: 12841093 // gas legacy: 12649059 -// gas legacyOptimized: 12267870 +// gas legacyOptimized: 12267859 // set_get_length(uint256): 0xFFFF -> FAILURE # Out-of-gas # diff --git a/test/libyul/objectCompiler/long_object_name.yul b/test/libyul/objectCompiler/long_object_name.yul index ad8266d1e..72382f162 100644 --- a/test/libyul/objectCompiler/long_object_name.yul +++ b/test/libyul/objectCompiler/long_object_name.yul @@ -16,10 +16,12 @@ object "t" { // 0x00 // /* "source":23:147 */ // sstore +// stop // stop // // sub_0: assembly { +// stop // } -// Bytecode: 6000600055fe -// Opcodes: PUSH1 0x0 PUSH1 0x0 SSTORE INVALID -// SourceMappings: 33:113:0:-:0;30:1;23:124 +// Bytecode: 600160005500fe +// Opcodes: PUSH1 0x1 PUSH1 0x0 SSTORE STOP INVALID +// SourceMappings: 33:113:0:-:0;30:1;23:124; diff --git a/test/libyul/objectCompiler/nested_optimizer.yul b/test/libyul/objectCompiler/nested_optimizer.yul index e6f8b1f23..ec526be65 100644 --- a/test/libyul/objectCompiler/nested_optimizer.yul +++ b/test/libyul/objectCompiler/nested_optimizer.yul @@ -25,6 +25,7 @@ object "a" { // calldataload // /* "source":107:127 */ // sstore +// stop // stop // // sub_0: assembly { @@ -35,7 +36,8 @@ object "a" { // calldataload // /* "source":253:273 */ // sstore +// stop // } -// Bytecode: 6000803555fe -// Opcodes: PUSH1 0x0 DUP1 CALLDATALOAD SSTORE INVALID -// SourceMappings: 48:1:0:-:0;;35:15;107:20 +// Bytecode: 600080355500fe +// Opcodes: PUSH1 0x0 DUP1 CALLDATALOAD SSTORE STOP INVALID +// SourceMappings: 48:1:0:-:0;;35:15;107:20; diff --git a/test/libyul/objectCompiler/simple_optimizer.yul b/test/libyul/objectCompiler/simple_optimizer.yul index cf7658ea0..38fa05538 100644 --- a/test/libyul/objectCompiler/simple_optimizer.yul +++ b/test/libyul/objectCompiler/simple_optimizer.yul @@ -15,6 +15,7 @@ // calldataload // /* "source":79:99 */ // sstore -// Bytecode: 6000803555 -// Opcodes: PUSH1 0x0 DUP1 CALLDATALOAD SSTORE -// SourceMappings: 26:1:0:-:0;;13:15;79:20 +// stop +// Bytecode: 600080355500 +// Opcodes: PUSH1 0x0 DUP1 CALLDATALOAD SSTORE STOP +// SourceMappings: 26:1:0:-:0;;13:15;79:20; diff --git a/test/libyul/yulOptimizerTests/fullSuite/aztec.yul b/test/libyul/yulOptimizerTests/fullSuite/aztec.yul index 68640c7ca..59c6dbdd6 100644 --- a/test/libyul/yulOptimizerTests/fullSuite/aztec.yul +++ b/test/libyul/yulOptimizerTests/fullSuite/aztec.yul @@ -237,13 +237,8 @@ // { // mstore(0x80, 7673901602397024137095011250362199966051872585513276903826533215767972925880) // mstore(0xa0, 8489654445897228341090914135473290831551238522473825886865492707826370766375) -// let _1 := calldataload(0x04) -// let notes := add(0x04, _1) -// let m := calldataload(0x24) -// let n := calldataload(notes) -// let _2 := 0x30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f0000001 -// let challenge := mod(calldataload(0x44), _2) -// if gt(m, n) +// let notes := add(0x04, calldataload(0x04)) +// if gt(calldataload(0x24), calldataload(notes)) // { // mstore(0x00, 404) // revert(0x00, 0x20) @@ -251,71 +246,75 @@ // let kn := calldataload(add(calldatasize(), not(191))) // mstore(0x2a0, caller()) // mstore(0x2c0, kn) -// mstore(0x2e0, m) -// kn := mulmod(sub(_2, kn), challenge, _2) -// hashCommitments(notes, n) -// let b := add(0x300, shl(7, n)) +// mstore(0x2e0, calldataload(0x24)) +// kn := mulmod(sub(0x30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f0000001, kn), mod(calldataload(0x44), 0x30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f0000001), 0x30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f0000001) +// hashCommitments(notes, calldataload(notes)) +// let b := add(0x300, shl(7, calldataload(notes))) // let i := 0 -// for { } lt(i, n) { i := add(i, 0x01) } +// for { } lt(i, calldataload(notes)) { i := add(i, 0x01) } // { -// let _3 := add(_1, mul(i, 0xc0)) -// let noteIndex := add(_3, 0x24) +// let noteIndex := add(add(calldataload(0x04), mul(i, 0xc0)), 0x24) // let k := 0 -// let a := calldataload(add(_3, 0x44)) -// let c := challenge -// let _4 := add(i, 0x01) -// switch eq(_4, n) +// let a := calldataload(add(add(calldataload(0x04), mul(i, 0xc0)), 0x44)) +// let c := mod(calldataload(0x44), 0x30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f0000001) +// let _1 := add(i, 0x01) +// switch eq(_1, calldataload(notes)) // case 1 { // k := kn -// if eq(m, n) { k := sub(_2, kn) } +// if eq(calldataload(0x24), calldataload(notes)) +// { +// k := sub(0x30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f0000001, kn) +// } // } // case 0 { k := calldataload(noteIndex) } // validateCommitment(noteIndex, k, a) -// switch gt(_4, m) +// switch gt(_1, calldataload(0x24)) // case 1 { -// kn := addmod(kn, sub(_2, k), _2) -// let x := mod(mload(0), _2) -// k := mulmod(k, x, _2) -// a := mulmod(a, x, _2) -// c := mulmod(challenge, x, _2) +// kn := addmod(kn, sub(0x30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f0000001, k), 0x30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f0000001) +// let x := mod(mload(0), 0x30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f0000001) +// k := mulmod(k, x, 0x30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f0000001) +// a := mulmod(a, x, 0x30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f0000001) +// c := mulmod(mod(calldataload(0x44), 0x30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f0000001), x, 0x30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f0000001) // mstore(0, keccak256(0, 0x20)) // } -// case 0 { kn := addmod(kn, k, _2) } -// let _5 := 0x40 -// calldatacopy(0xe0, add(_3, 164), _5) -// calldatacopy(0x20, add(_3, 100), _5) -// mstore(0x120, sub(_2, c)) +// case 0 { +// kn := addmod(kn, k, 0x30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f0000001) +// } +// calldatacopy(0xe0, add(add(calldataload(0x04), mul(i, 0xc0)), 164), 0x40) +// calldatacopy(0x20, add(add(calldataload(0x04), mul(i, 0xc0)), 100), 0x40) +// mstore(0x120, sub(0x30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f0000001, c)) // mstore(0x60, k) // mstore(0xc0, a) -// let result := call(gas(), 7, 0, 0xe0, 0x60, 0x1a0, _5) -// let result_1 := and(result, call(gas(), 7, 0, 0x20, 0x60, 0x120, _5)) -// let _6 := 0x160 -// let result_2 := and(result_1, call(gas(), 7, 0, 0x80, 0x60, _6, _5)) -// let result_3 := and(result_2, call(gas(), 6, 0, 0x120, 0x80, _6, _5)) -// result := and(result_3, call(gas(), 6, 0, _6, 0x80, b, _5)) -// if eq(i, m) +// let result := call(gas(), 7, 0, 0xe0, 0x60, 0x1a0, 0x40) +// let result_1 := and(result, call(gas(), 7, 0, 0x20, 0x60, 0x120, 0x40)) +// let _2 := 0x160 +// let result_2 := and(result_1, call(gas(), 7, 0, 0x80, 0x60, _2, 0x40)) +// let result_3 := and(result_2, call(gas(), 6, 0, 0x120, 0x80, _2, 0x40)) +// result := and(result_3, call(gas(), 6, 0, _2, 0x80, b, 0x40)) +// if eq(i, calldataload(0x24)) // { // mstore(0x260, mload(0x20)) -// mstore(0x280, mload(_5)) +// mstore(0x280, mload(0x40)) // mstore(0x1e0, mload(0xe0)) // mstore(0x200, sub(0x30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd47, mload(0x100))) // } -// if gt(i, m) +// if gt(i, calldataload(0x24)) // { // mstore(0x60, c) -// let result_4 := and(result, call(gas(), 7, 0, 0x20, 0x60, 0x220, _5)) -// let result_5 := and(result_4, call(gas(), 6, 0, 0x220, 0x80, 0x260, _5)) -// result := and(result_5, call(gas(), 6, 0, 0x1a0, 0x80, 0x1e0, _5)) +// let _3 := 0x220 +// let result_4 := and(result, call(gas(), 7, 0, 0x20, 0x60, _3, 0x40)) +// let result_5 := and(result_4, call(gas(), 6, 0, _3, 0x80, 0x260, 0x40)) +// result := and(result_5, call(gas(), 6, 0, 0x1a0, 0x80, 0x1e0, 0x40)) // } // if iszero(result) // { // mstore(0, 400) // revert(0, 0x20) // } -// b := add(b, _5) +// b := add(b, 0x40) // } -// if lt(m, n) { validatePairing() } -// if iszero(eq(mod(keccak256(0x2a0, add(b, not(671))), _2), challenge)) +// if lt(calldataload(0x24), calldataload(notes)) { validatePairing() } +// if iszero(eq(mod(keccak256(0x2a0, add(b, not(671))), 0x30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f0000001), mod(calldataload(0x44), 0x30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f0000001))) // { // mstore(0, 404) // revert(0, 0x20) diff --git a/test/libyul/yulOptimizerTests/fullSuite/stack_compressor_msize.yul b/test/libyul/yulOptimizerTests/fullSuite/stack_compressor_msize.yul index b417991c2..d670f002f 100644 --- a/test/libyul/yulOptimizerTests/fullSuite/stack_compressor_msize.yul +++ b/test/libyul/yulOptimizerTests/fullSuite/stack_compressor_msize.yul @@ -33,25 +33,30 @@ sstore(0,0) sstore(3,1) } +// ==== +// EVMVersion: >homestead // ---- // step: fullSuite // // { // { -// let _1 := gt(not(gcd(10, 15)), 1) -// let _2 := gcd(10, 15) -// let _3 := not(0) -// let _4 := lt(or(1, add(gcd(10, 15), _3)), 1) -// let _5 := gcd(10, 15) -// let _6 := gcd(10, 15) -// pop(keccak256(gcd(10, 15), or(gt(not(gcd(10, 15)), 1), 1))) -// mstore(lt(or(gt(1, or(or(gt(or(or(or(gt(or(gt(_3, _6), 1), _5), _4), _2), 1), 1), _1), 1)), 1), 1), 1) -// sstore(not(gcd(10, 15)), 1) +// let _1 := 1 +// let _2 := 15 +// let _3 := 10 +// let _4 := gt(not(gcd(_3, _2)), _1) +// let _5 := gcd(_3, _2) +// let _6 := not(0) +// let _7 := lt(or(_1, add(gcd(_3, _2), _6)), _1) +// let _8 := gcd(_3, _2) +// let _9 := gcd(_3, _2) +// pop(keccak256(gcd(_3, _2), or(gt(not(gcd(_3, _2)), _1), _1))) +// mstore(lt(or(gt(_1, or(or(gt(or(or(or(gt(or(gt(_6, _9), _1), _8), _7), _5), _1), _1), _4), _1)), _1), _1), _1) +// sstore(not(gcd(_3, _2)), _1) // sstore(0, 0) -// sstore(2, 1) -// extcodecopy(1, msize(), 1, 1) +// sstore(2, _1) +// extcodecopy(_1, msize(), _1, _1) // sstore(0, 0) -// sstore(3, 1) +// sstore(3, _1) // } // function gcd(_a, _b) -> out // { diff --git a/test/libyul/yulOptimizerTests/stackCompressor/inlineInBlock.yul b/test/libyul/yulOptimizerTests/stackCompressor/inlineInBlock.yul index 4ff056157..382bd201d 100644 --- a/test/libyul/yulOptimizerTests/stackCompressor/inlineInBlock.yul +++ b/test/libyul/yulOptimizerTests/stackCompressor/inlineInBlock.yul @@ -3,6 +3,8 @@ let y := calldataload(calldataload(9)) mstore(y, add(add(add(add(add(add(add(add(add(add(add(add(add(add(add(add(add(add(y, 1), 1), 1), 1), 1), 1), 1), 1), 1), 1), 1), 1), 1), 1), 1), 1), 1), 1)) } +// ==== +// EVMVersion: =homestead // ---- // step: stackCompressor // diff --git a/test/libyul/yulOptimizerTests/stackCompressor/inlineInFunction.yul b/test/libyul/yulOptimizerTests/stackCompressor/inlineInFunction.yul index f237ea8bb..ed85fe7b8 100644 --- a/test/libyul/yulOptimizerTests/stackCompressor/inlineInFunction.yul +++ b/test/libyul/yulOptimizerTests/stackCompressor/inlineInFunction.yul @@ -5,6 +5,8 @@ mstore(y, add(add(add(add(add(add(add(add(add(add(add(add(add(add(add(add(add(add(y, 1), 1), 1), 1), 1), 1), 1), 1), 1), 1), 1), 1), 1), 1), 1), 1), 1), 1)) } } +// ==== +// EVMVersion: =homestead // ---- // step: stackCompressor // diff --git a/test/libyul/yulOptimizerTests/stackCompressor/unusedPrunerWithMSize.yul b/test/libyul/yulOptimizerTests/stackCompressor/unusedPrunerWithMSize.yul index 7e3acd9b6..dc10737ad 100644 --- a/test/libyul/yulOptimizerTests/stackCompressor/unusedPrunerWithMSize.yul +++ b/test/libyul/yulOptimizerTests/stackCompressor/unusedPrunerWithMSize.yul @@ -18,6 +18,8 @@ extcodecopy(1, msize(), 1, 1) } } +// ==== +// EVMVersion: =homestead // ---- // step: stackCompressor //