mirror of
https://github.com/ethereum/solidity
synced 2023-10-03 13:03:40 +00:00
Add inlining for old optimizer.
This commit is contained in:
@@ -0,0 +1 @@
|
||||
--optimize --asm --metadata-hash none
|
||||
@@ -0,0 +1,17 @@
|
||||
// SPDX-License-Identifier: GPL-3.0
|
||||
pragma solidity >=0.0;
|
||||
|
||||
function unsafe_add(uint x, uint y) pure returns (uint)
|
||||
{
|
||||
unchecked {
|
||||
return x + y;
|
||||
}
|
||||
}
|
||||
|
||||
contract C {
|
||||
function f() public pure {
|
||||
for(uint x = 0; x < 10; x = unsafe_add(x, unsafe_add(x, 1)))
|
||||
{
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,86 @@
|
||||
|
||||
======= optimizer_inliner_add/input.sol:C =======
|
||||
EVM assembly:
|
||||
/* "optimizer_inliner_add/input.sol":165:305 contract C {... */
|
||||
mstore(0x40, 0x80)
|
||||
callvalue
|
||||
dup1
|
||||
iszero
|
||||
tag_1
|
||||
jumpi
|
||||
0x00
|
||||
dup1
|
||||
revert
|
||||
tag_1:
|
||||
pop
|
||||
dataSize(sub_0)
|
||||
dup1
|
||||
dataOffset(sub_0)
|
||||
0x00
|
||||
codecopy
|
||||
0x00
|
||||
return
|
||||
stop
|
||||
|
||||
sub_0: assembly {
|
||||
/* "optimizer_inliner_add/input.sol":165:305 contract C {... */
|
||||
mstore(0x40, 0x80)
|
||||
callvalue
|
||||
dup1
|
||||
iszero
|
||||
tag_1
|
||||
jumpi
|
||||
0x00
|
||||
dup1
|
||||
revert
|
||||
tag_1:
|
||||
pop
|
||||
jumpi(tag_2, lt(calldatasize, 0x04))
|
||||
shr(0xe0, calldataload(0x00))
|
||||
dup1
|
||||
0x26121ff0
|
||||
eq
|
||||
tag_3
|
||||
jumpi
|
||||
tag_2:
|
||||
0x00
|
||||
dup1
|
||||
revert
|
||||
/* "optimizer_inliner_add/input.sol":182:303 function f() public pure {... */
|
||||
tag_3:
|
||||
tag_4
|
||||
tag_5
|
||||
jump // in
|
||||
tag_4:
|
||||
stop
|
||||
tag_5:
|
||||
/* "optimizer_inliner_add/input.sol":221:227 uint x */
|
||||
0x00
|
||||
/* "optimizer_inliner_add/input.sol":217:297 for(uint x = 0; x < 10; x = unsafe_add(x, unsafe_add(x, 1)))... */
|
||||
tag_7:
|
||||
/* "optimizer_inliner_add/input.sol":237:239 10 */
|
||||
0x0a
|
||||
/* "optimizer_inliner_add/input.sol":233:234 x */
|
||||
dup2
|
||||
/* "optimizer_inliner_add/input.sol":233:239 x < 10 */
|
||||
lt
|
||||
/* "optimizer_inliner_add/input.sol":217:297 for(uint x = 0; x < 10; x = unsafe_add(x, unsafe_add(x, 1)))... */
|
||||
iszero
|
||||
tag_8
|
||||
jumpi
|
||||
/* "optimizer_inliner_add/input.sol":149:154 x + y */
|
||||
dup1
|
||||
add
|
||||
/* "optimizer_inliner_add/input.sol":273:274 1 */
|
||||
0x01
|
||||
/* "optimizer_inliner_add/input.sol":149:154 x + y */
|
||||
add
|
||||
/* "optimizer_inliner_add/input.sol":217:297 for(uint x = 0; x < 10; x = unsafe_add(x, unsafe_add(x, 1)))... */
|
||||
jump(tag_7)
|
||||
tag_8:
|
||||
pop
|
||||
/* "optimizer_inliner_add/input.sol":182:303 function f() public pure {... */
|
||||
jump // out
|
||||
|
||||
auxdata: <AUXDATA REMOVED>
|
||||
}
|
||||
Reference in New Issue
Block a user