2020-11-23 18:06:44 +00:00
|
|
|
pragma abicoder v2;
|
2020-03-09 21:14:07 +00:00
|
|
|
|
|
|
|
|
|
|
|
contract C {
|
|
|
|
bytes data;
|
|
|
|
struct S {
|
|
|
|
uint256 a;
|
|
|
|
uint256[] b;
|
|
|
|
}
|
|
|
|
|
|
|
|
function f() public returns (S memory) {
|
|
|
|
S memory s;
|
|
|
|
s.a = 8;
|
|
|
|
s.b = new uint256[](3);
|
|
|
|
s.b[0] = 9;
|
|
|
|
s.b[1] = 10;
|
|
|
|
s.b[2] = 11;
|
|
|
|
data = abi.encode(s);
|
|
|
|
return abi.decode(data, (S));
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2020-10-20 15:05:58 +00:00
|
|
|
// ====
|
|
|
|
// compileViaYul: also
|
2020-03-09 21:14:07 +00:00
|
|
|
// ----
|
|
|
|
// f() -> 0x20, 0x8, 0x40, 0x3, 0x9, 0xa, 0xb
|
2022-01-14 12:37:40 +00:00
|
|
|
// gas irOptimized: 203310
|
2022-03-07 18:13:35 +00:00
|
|
|
// gas legacy: 206075
|
|
|
|
// gas legacyOptimized: 203059
|