IR: /******************************************************* * WARNING * * Solidity to Yul compilation is still EXPERIMENTAL * * It can result in LOSS OF FUNDS or worse * * !USE AT YOUR OWN RISK! * *******************************************************/ object "test_11" { code { mstore(64, 128) if callvalue() { revert(0, 0) } constructor_test_11() codecopy(0, dataoffset("test_11_deployed"), datasize("test_11_deployed")) return(0, datasize("test_11_deployed")) function constructor_test_11() { } } object "test_11_deployed" { code { mstore(64, 128) if iszero(lt(calldatasize(), 4)) { let selector := shift_right_224_unsigned(calldataload(0)) switch selector case 0x26121ff0 { // f() if callvalue() { revert(0, 0) } abi_decode_tuple_(4, calldatasize()) let ret_0 := fun_f_10() let memPos := allocate_memory(0) let memEnd := abi_encode_tuple_t_bool__to_t_bool__fromStack(memPos , ret_0) return(memPos, sub(memEnd, memPos)) } default {} } if iszero(calldatasize()) { } revert(0, 0) function abi_decode_tuple_(headStart, dataEnd) { if slt(sub(dataEnd, headStart), 0) { revert(0, 0) } } function abi_encode_t_bool_to_t_bool_fromStack(value, pos) { mstore(pos, cleanup_t_bool(value)) } function abi_encode_tuple_t_bool__to_t_bool__fromStack(headStart , value0) -> tail { tail := add(headStart, 32) abi_encode_t_bool_to_t_bool_fromStack(value0, add(headStart, 0)) } function allocate_memory(size) -> memPtr { memPtr := allocate_unbounded() finalize_allocation(memPtr, size) } function allocate_unbounded() -> memPtr { memPtr := mload(64) } function cleanup_t_bool(value) -> cleaned { cleaned := iszero(iszero(value)) } function finalize_allocation(memPtr, size) { let newFreePtr := add(memPtr, round_up_to_mul_of_32(size)) // protect against overflow if or(gt(newFreePtr, 0xffffffffffffffff), lt(newFreePtr, memPtr)) { panic_error_0x41() } mstore(64, newFreePtr) } function fun_f_10() -> var__5 { let zero_t_bool_1 := zero_value_for_split_t_bool() var__5 := zero_t_bool_1 let expr_7 := 0x01 var__5 := expr_7 leave } function panic_error_0x41() { mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856) mstore(4, 0x41) revert(0, 0x24) } function round_up_to_mul_of_32(value) -> result { result := and(add(value, 31), not(31)) } function shift_right_224_unsigned(value) -> newValue { newValue := shr(224, value) } function zero_value_for_split_t_bool() -> ret { ret := 0 } } } }