diff --git a/libsolidity/codegen/YulUtilFunctions.cpp b/libsolidity/codegen/YulUtilFunctions.cpp index 48daf3fa1..7e66ef627 100644 --- a/libsolidity/codegen/YulUtilFunctions.cpp +++ b/libsolidity/codegen/YulUtilFunctions.cpp @@ -4218,13 +4218,7 @@ string YulUtilFunctions::extractReturndataFunction() data := () } default { - // allocate some memory into data of size returndatasize() + PADDING - data := ((add(returndatasize(), 0x20))) - - // store array length into the front - mstore(data, returndatasize()) - - // append to data + data := (returndatasize()) returndatacopy(add(data, 0x20), 0, returndatasize()) } @@ -4234,8 +4228,7 @@ string YulUtilFunctions::extractReturndataFunction() )") ("functionName", functionName) ("supportsReturndata", m_evmVersion.supportsReturndata()) - ("allocate", allocationFunction()) - ("roundUp", roundUpFunction()) + ("allocateArray", allocateMemoryArrayFunction(*TypeProvider::bytesMemory())) ("emptyArray", zeroValueFunction(*TypeProvider::bytesMemory())) .render(); });