mirror of
https://github.com/ethereum/solidity
synced 2023-10-03 13:03:40 +00:00
Add test cases for return slot allocation.
This commit is contained in:
parent
5433a640fb
commit
04a051d380
@ -0,0 +1,28 @@
|
|||||||
|
{
|
||||||
|
function f(a, b, c) -> x { pop(address()) sstore(a, c) pop(callvalue()) x := b }
|
||||||
|
}
|
||||||
|
// ====
|
||||||
|
// stackOptimization: true
|
||||||
|
// ----
|
||||||
|
// PUSH1 0x17
|
||||||
|
// JUMP
|
||||||
|
// JUMPDEST
|
||||||
|
// PUSH1 0x0
|
||||||
|
// ADDRESS
|
||||||
|
// POP
|
||||||
|
// DUP4
|
||||||
|
// DUP3
|
||||||
|
// SSTORE
|
||||||
|
// CALLVALUE
|
||||||
|
// POP
|
||||||
|
// DUP3
|
||||||
|
// SWAP1
|
||||||
|
// POP
|
||||||
|
// JUMPDEST
|
||||||
|
// SWAP4
|
||||||
|
// SWAP3
|
||||||
|
// POP
|
||||||
|
// POP
|
||||||
|
// POP
|
||||||
|
// JUMP
|
||||||
|
// JUMPDEST
|
@ -0,0 +1,27 @@
|
|||||||
|
{
|
||||||
|
/* function f(a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15, a16, a17, a18, a19, a20) -> x {
|
||||||
|
mstore(0x0100, a1)
|
||||||
|
mstore(0x0120, a2)
|
||||||
|
mstore(0x0140, a3)
|
||||||
|
mstore(0x0160, a4)
|
||||||
|
mstore(0x0180, a5)
|
||||||
|
mstore(0x01A0, a6)
|
||||||
|
mstore(0x01C0, a7)
|
||||||
|
mstore(0x01E0, a8)
|
||||||
|
mstore(0x0200, a9)
|
||||||
|
mstore(0x0220, a10)
|
||||||
|
mstore(0x0240, a11)
|
||||||
|
mstore(0x0260, a12)
|
||||||
|
mstore(0x0280, a13)
|
||||||
|
mstore(0x02A0, a14)
|
||||||
|
mstore(0x02C0, a15)
|
||||||
|
mstore(0x02E0, a16)
|
||||||
|
mstore(0x0300, a17)
|
||||||
|
mstore(0x0320, a18)
|
||||||
|
mstore(0x0340, a19)
|
||||||
|
x := a20
|
||||||
|
}*/
|
||||||
|
}
|
||||||
|
// ====
|
||||||
|
// stackOptimization: true
|
||||||
|
// ----
|
@ -0,0 +1,18 @@
|
|||||||
|
{
|
||||||
|
function f() -> x { pop(address()) { pop(callvalue()) } }
|
||||||
|
}
|
||||||
|
// ====
|
||||||
|
// stackOptimization: true
|
||||||
|
// ----
|
||||||
|
// PUSH1 0xD
|
||||||
|
// JUMP
|
||||||
|
// JUMPDEST
|
||||||
|
// PUSH1 0x0
|
||||||
|
// ADDRESS
|
||||||
|
// POP
|
||||||
|
// CALLVALUE
|
||||||
|
// POP
|
||||||
|
// JUMPDEST
|
||||||
|
// SWAP1
|
||||||
|
// JUMP
|
||||||
|
// JUMPDEST
|
@ -0,0 +1,18 @@
|
|||||||
|
{
|
||||||
|
function f() -> x { pop(address()) let y := callvalue() }
|
||||||
|
}
|
||||||
|
// ====
|
||||||
|
// stackOptimization: true
|
||||||
|
// ----
|
||||||
|
// PUSH1 0xD
|
||||||
|
// JUMP
|
||||||
|
// JUMPDEST
|
||||||
|
// PUSH1 0x0
|
||||||
|
// ADDRESS
|
||||||
|
// POP
|
||||||
|
// CALLVALUE
|
||||||
|
// POP
|
||||||
|
// JUMPDEST
|
||||||
|
// SWAP1
|
||||||
|
// JUMP
|
||||||
|
// JUMPDEST
|
@ -0,0 +1,27 @@
|
|||||||
|
{
|
||||||
|
function f() -> x { pop(address()) for { pop(callvalue()) } 0 {} { } }
|
||||||
|
}
|
||||||
|
// ====
|
||||||
|
// stackOptimization: true
|
||||||
|
// ----
|
||||||
|
// PUSH1 0x19
|
||||||
|
// JUMP
|
||||||
|
// JUMPDEST
|
||||||
|
// PUSH1 0x0
|
||||||
|
// ADDRESS
|
||||||
|
// POP
|
||||||
|
// CALLVALUE
|
||||||
|
// POP
|
||||||
|
// JUMPDEST
|
||||||
|
// PUSH1 0x0
|
||||||
|
// ISZERO
|
||||||
|
// PUSH1 0x15
|
||||||
|
// JUMPI
|
||||||
|
// JUMPDEST
|
||||||
|
// PUSH1 0xA
|
||||||
|
// JUMP
|
||||||
|
// JUMPDEST
|
||||||
|
// JUMPDEST
|
||||||
|
// SWAP1
|
||||||
|
// JUMP
|
||||||
|
// JUMPDEST
|
@ -0,0 +1,23 @@
|
|||||||
|
{
|
||||||
|
function f() -> x { pop(address()) if 1 { pop(callvalue()) } }
|
||||||
|
}
|
||||||
|
// ====
|
||||||
|
// stackOptimization: true
|
||||||
|
// ----
|
||||||
|
// PUSH1 0x14
|
||||||
|
// JUMP
|
||||||
|
// JUMPDEST
|
||||||
|
// PUSH1 0x0
|
||||||
|
// ADDRESS
|
||||||
|
// POP
|
||||||
|
// PUSH1 0x1
|
||||||
|
// ISZERO
|
||||||
|
// PUSH1 0x10
|
||||||
|
// JUMPI
|
||||||
|
// CALLVALUE
|
||||||
|
// POP
|
||||||
|
// JUMPDEST
|
||||||
|
// JUMPDEST
|
||||||
|
// SWAP1
|
||||||
|
// JUMP
|
||||||
|
// JUMPDEST
|
@ -0,0 +1,20 @@
|
|||||||
|
{
|
||||||
|
function f() -> x { pop(address()) leave pop(callvalue()) }
|
||||||
|
}
|
||||||
|
// ====
|
||||||
|
// stackOptimization: true
|
||||||
|
// ----
|
||||||
|
// PUSH1 0x10
|
||||||
|
// JUMP
|
||||||
|
// JUMPDEST
|
||||||
|
// PUSH1 0x0
|
||||||
|
// ADDRESS
|
||||||
|
// POP
|
||||||
|
// PUSH1 0xD
|
||||||
|
// JUMP
|
||||||
|
// CALLVALUE
|
||||||
|
// POP
|
||||||
|
// JUMPDEST
|
||||||
|
// SWAP1
|
||||||
|
// JUMP
|
||||||
|
// JUMPDEST
|
@ -0,0 +1,21 @@
|
|||||||
|
{
|
||||||
|
function f() -> x { pop(address()) sstore(0, x) pop(callvalue()) }
|
||||||
|
}
|
||||||
|
// ====
|
||||||
|
// stackOptimization: true
|
||||||
|
// ----
|
||||||
|
// PUSH1 0x11
|
||||||
|
// JUMP
|
||||||
|
// JUMPDEST
|
||||||
|
// PUSH1 0x0
|
||||||
|
// ADDRESS
|
||||||
|
// POP
|
||||||
|
// DUP1
|
||||||
|
// PUSH1 0x0
|
||||||
|
// SSTORE
|
||||||
|
// CALLVALUE
|
||||||
|
// POP
|
||||||
|
// JUMPDEST
|
||||||
|
// SWAP1
|
||||||
|
// JUMP
|
||||||
|
// JUMPDEST
|
@ -0,0 +1,16 @@
|
|||||||
|
{
|
||||||
|
function f() -> x { pop(callvalue()) }
|
||||||
|
}
|
||||||
|
// ====
|
||||||
|
// stackOptimization: true
|
||||||
|
// ----
|
||||||
|
// PUSH1 0xB
|
||||||
|
// JUMP
|
||||||
|
// JUMPDEST
|
||||||
|
// PUSH1 0x0
|
||||||
|
// CALLVALUE
|
||||||
|
// POP
|
||||||
|
// JUMPDEST
|
||||||
|
// SWAP1
|
||||||
|
// JUMP
|
||||||
|
// JUMPDEST
|
@ -0,0 +1,20 @@
|
|||||||
|
{
|
||||||
|
function f() -> x, y, z { pop(callvalue()) }
|
||||||
|
}
|
||||||
|
// ====
|
||||||
|
// stackOptimization: true
|
||||||
|
// ----
|
||||||
|
// PUSH1 0x11
|
||||||
|
// JUMP
|
||||||
|
// JUMPDEST
|
||||||
|
// PUSH1 0x0
|
||||||
|
// PUSH1 0x0
|
||||||
|
// PUSH1 0x0
|
||||||
|
// CALLVALUE
|
||||||
|
// POP
|
||||||
|
// JUMPDEST
|
||||||
|
// SWAP1
|
||||||
|
// SWAP2
|
||||||
|
// SWAP3
|
||||||
|
// JUMP
|
||||||
|
// JUMPDEST
|
Loading…
Reference in New Issue
Block a user