Remove swap after dup.

This commit is contained in:
chriseth
2020-07-13 15:05:01 +02:00
parent c90d3a3558
commit 080f33a72c
6 changed files with 95 additions and 1 deletions
+1
View File
@@ -0,0 +1 @@
--asm
+5
View File
@@ -0,0 +1,5 @@
Warning: SPDX license identifier not provided in source file. Before publishing, consider adding a comment containing "SPDX-License-Identifier: <SPDX-License>" to each source file. Use "SPDX-License-Identifier: UNLICENSED" for non-open-source code. Please see https://spdx.org for more information.
--> dup_opt_peephole/input.sol
Warning: Source file does not specify required compiler version!
--> dup_opt_peephole/input.sol
@@ -0,0 +1,9 @@
contract C {
fallback() external {
assembly {
let x := calldataload(0)
x := x
sstore(0, x)
}
}
}
+54
View File
@@ -0,0 +1,54 @@
======= dup_opt_peephole/input.sol:C =======
EVM assembly:
/* "dup_opt_peephole/input.sol":0:111 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 {
/* "dup_opt_peephole/input.sol":0:111 contract C {... */
mstore(0x40, 0x80)
callvalue
dup1
iszero
tag_3
jumpi
0x00
dup1
revert
tag_3:
pop
/* "dup_opt_peephole/input.sol":74:75 0 */
0x00
/* "dup_opt_peephole/input.sol":61:76 calldataload(0) */
calldataload
/* "dup_opt_peephole/input.sol":100:101 x */
dup1
/* "dup_opt_peephole/input.sol":97:98 0 */
0x00
/* "dup_opt_peephole/input.sol":90:102 sstore(0, x) */
sstore
/* "dup_opt_peephole/input.sol":47:106 {... */
pop
/* "dup_opt_peephole/input.sol":0:111 contract C {... */
stop
auxdata: AUXDATA REMOVED
}