mirror of
https://github.com/ethereum/solidity
synced 2023-10-03 13:03:40 +00:00
111 lines
1.7 KiB
Plaintext
111 lines
1.7 KiB
Plaintext
{
|
|
let x := 7
|
|
|
|
let y1, y2, y3, y4, y5, y6, y7, y8, y9, y10, y11, y12, y13, y14, y15 := verbatim_0i_15o("\x60\x42") // the verbatim will show up as PUSH1 42
|
|
|
|
// last use of x - the slot of x will be marked as unused, but not popped, since it is not at the stack top
|
|
sstore(0,x)
|
|
|
|
// If the slot of x is blindly reused, this will fail.
|
|
let z1, z2 := verbatim_0i_2o("\x60\x43") // will show up as PUSH1 43
|
|
|
|
// prevent the z's from being popped immediately after their declaration above.
|
|
mstore(1, z1)
|
|
mstore(1, z2)
|
|
|
|
// use all y's to prevent them from being popped immediately after their declaration above
|
|
sstore(1, y1)
|
|
sstore(1, y2)
|
|
sstore(1, y3)
|
|
sstore(1, y4)
|
|
sstore(1, y5)
|
|
sstore(1, y6)
|
|
sstore(1, y7)
|
|
sstore(1, y8)
|
|
sstore(1, y9)
|
|
sstore(1, y10)
|
|
sstore(1, y11)
|
|
sstore(1, y12)
|
|
sstore(1, y13)
|
|
sstore(1, y14)
|
|
sstore(1, y15)
|
|
}
|
|
// ====
|
|
// stackOptimization: true
|
|
// ----
|
|
// PUSH1 0x7
|
|
// PUSH1 0x42
|
|
// DUP16
|
|
// PUSH1 0x0
|
|
// SSTORE
|
|
// PUSH1 0x43
|
|
// DUP2
|
|
// PUSH1 0x1
|
|
// MSTORE
|
|
// DUP1
|
|
// PUSH1 0x1
|
|
// MSTORE
|
|
// POP
|
|
// POP
|
|
// DUP15
|
|
// PUSH1 0x1
|
|
// SSTORE
|
|
// DUP14
|
|
// PUSH1 0x1
|
|
// SSTORE
|
|
// DUP13
|
|
// PUSH1 0x1
|
|
// SSTORE
|
|
// DUP12
|
|
// PUSH1 0x1
|
|
// SSTORE
|
|
// DUP11
|
|
// PUSH1 0x1
|
|
// SSTORE
|
|
// DUP10
|
|
// PUSH1 0x1
|
|
// SSTORE
|
|
// DUP9
|
|
// PUSH1 0x1
|
|
// SSTORE
|
|
// DUP8
|
|
// PUSH1 0x1
|
|
// SSTORE
|
|
// DUP7
|
|
// PUSH1 0x1
|
|
// SSTORE
|
|
// DUP6
|
|
// PUSH1 0x1
|
|
// SSTORE
|
|
// DUP5
|
|
// PUSH1 0x1
|
|
// SSTORE
|
|
// DUP4
|
|
// PUSH1 0x1
|
|
// SSTORE
|
|
// DUP3
|
|
// PUSH1 0x1
|
|
// SSTORE
|
|
// DUP2
|
|
// PUSH1 0x1
|
|
// SSTORE
|
|
// DUP1
|
|
// PUSH1 0x1
|
|
// SSTORE
|
|
// POP
|
|
// POP
|
|
// POP
|
|
// POP
|
|
// POP
|
|
// POP
|
|
// POP
|
|
// POP
|
|
// POP
|
|
// POP
|
|
// POP
|
|
// POP
|
|
// POP
|
|
// POP
|
|
// POP
|
|
// POP
|