mirror of
https://github.com/ethereum/solidity
synced 2023-10-03 13:03:40 +00:00
New tests for switch and if.
This commit is contained in:
parent
98dbfa783e
commit
bfaaf6c2f3
26
test/libyul/yulOptimizerTests/loadResolver/if_non_revert.yul
Normal file
26
test/libyul/yulOptimizerTests/loadResolver/if_non_revert.yul
Normal file
@ -0,0 +1,26 @@
|
|||||||
|
{
|
||||||
|
let x := calldataload(1)
|
||||||
|
|
||||||
|
mstore(0, x)
|
||||||
|
|
||||||
|
if calldataload(0)
|
||||||
|
{ x := 7 mstore(0, 2) }
|
||||||
|
|
||||||
|
sstore(0, mload(0))
|
||||||
|
}
|
||||||
|
// ----
|
||||||
|
// step: loadResolver
|
||||||
|
//
|
||||||
|
// {
|
||||||
|
// {
|
||||||
|
// let x := calldataload(1)
|
||||||
|
// let _2 := 0
|
||||||
|
// mstore(_2, x)
|
||||||
|
// if calldataload(_2)
|
||||||
|
// {
|
||||||
|
// x := 7
|
||||||
|
// mstore(_2, 2)
|
||||||
|
// }
|
||||||
|
// sstore(_2, mload(_2))
|
||||||
|
// }
|
||||||
|
// }
|
27
test/libyul/yulOptimizerTests/loadResolver/if_revert.yul
Normal file
27
test/libyul/yulOptimizerTests/loadResolver/if_revert.yul
Normal file
@ -0,0 +1,27 @@
|
|||||||
|
{
|
||||||
|
let x := calldataload(1)
|
||||||
|
|
||||||
|
mstore(0, x)
|
||||||
|
|
||||||
|
if calldataload(0)
|
||||||
|
{ x := 7 mstore(0, 2) revert(0, 0x20) }
|
||||||
|
|
||||||
|
sstore(0, mload(0))
|
||||||
|
}
|
||||||
|
// ----
|
||||||
|
// step: loadResolver
|
||||||
|
//
|
||||||
|
// {
|
||||||
|
// {
|
||||||
|
// let x := calldataload(1)
|
||||||
|
// let _2 := 0
|
||||||
|
// mstore(_2, x)
|
||||||
|
// if calldataload(_2)
|
||||||
|
// {
|
||||||
|
// x := 7
|
||||||
|
// mstore(_2, 2)
|
||||||
|
// revert(_2, 0x20)
|
||||||
|
// }
|
||||||
|
// sstore(_2, x)
|
||||||
|
// }
|
||||||
|
// }
|
@ -0,0 +1,25 @@
|
|||||||
|
{
|
||||||
|
let x := calldataload(1)
|
||||||
|
|
||||||
|
switch calldataload(0)
|
||||||
|
case 0 { revert(0, 0) }
|
||||||
|
default { mstore(0, x) x := 7 }
|
||||||
|
|
||||||
|
sstore(0, mload(0))
|
||||||
|
}
|
||||||
|
// ----
|
||||||
|
// step: loadResolver
|
||||||
|
//
|
||||||
|
// {
|
||||||
|
// {
|
||||||
|
// let x := calldataload(1)
|
||||||
|
// let _2 := 0
|
||||||
|
// switch calldataload(_2)
|
||||||
|
// case 0 { revert(_2, _2) }
|
||||||
|
// default {
|
||||||
|
// mstore(_2, x)
|
||||||
|
// x := 7
|
||||||
|
// }
|
||||||
|
// sstore(_2, mload(_2))
|
||||||
|
// }
|
||||||
|
// }
|
@ -0,0 +1,25 @@
|
|||||||
|
{
|
||||||
|
let x := calldataload(1)
|
||||||
|
|
||||||
|
switch calldataload(0)
|
||||||
|
case 0 { x := 7 revert(0, 0) }
|
||||||
|
default { mstore(0, x) }
|
||||||
|
|
||||||
|
sstore(0, mload(0))
|
||||||
|
}
|
||||||
|
// ----
|
||||||
|
// step: loadResolver
|
||||||
|
//
|
||||||
|
// {
|
||||||
|
// {
|
||||||
|
// let x := calldataload(1)
|
||||||
|
// let _2 := 0
|
||||||
|
// switch calldataload(_2)
|
||||||
|
// case 0 {
|
||||||
|
// x := 7
|
||||||
|
// revert(_2, _2)
|
||||||
|
// }
|
||||||
|
// default { mstore(_2, x) }
|
||||||
|
// sstore(_2, x)
|
||||||
|
// }
|
||||||
|
// }
|
@ -0,0 +1,22 @@
|
|||||||
|
{
|
||||||
|
let x := calldataload(1)
|
||||||
|
|
||||||
|
switch calldataload(0)
|
||||||
|
case 0 { mstore(0, x) }
|
||||||
|
default { mstore(0, x) }
|
||||||
|
|
||||||
|
sstore(0, mload(0))
|
||||||
|
}
|
||||||
|
// ----
|
||||||
|
// step: loadResolver
|
||||||
|
//
|
||||||
|
// {
|
||||||
|
// {
|
||||||
|
// let x := calldataload(1)
|
||||||
|
// let _2 := 0
|
||||||
|
// switch calldataload(_2)
|
||||||
|
// case 0 { mstore(_2, x) }
|
||||||
|
// default { mstore(_2, x) }
|
||||||
|
// sstore(_2, x)
|
||||||
|
// }
|
||||||
|
// }
|
@ -0,0 +1,22 @@
|
|||||||
|
{
|
||||||
|
let x := calldataload(1)
|
||||||
|
|
||||||
|
switch calldataload(0)
|
||||||
|
case 0 { revert(0, 0) }
|
||||||
|
default { mstore(0, x) }
|
||||||
|
|
||||||
|
sstore(0, mload(0))
|
||||||
|
}
|
||||||
|
// ----
|
||||||
|
// step: loadResolver
|
||||||
|
//
|
||||||
|
// {
|
||||||
|
// {
|
||||||
|
// let x := calldataload(1)
|
||||||
|
// let _2 := 0
|
||||||
|
// switch calldataload(_2)
|
||||||
|
// case 0 { revert(_2, _2) }
|
||||||
|
// default { mstore(_2, x) }
|
||||||
|
// sstore(_2, x)
|
||||||
|
// }
|
||||||
|
// }
|
@ -0,0 +1,22 @@
|
|||||||
|
{
|
||||||
|
let x := calldataload(1)
|
||||||
|
|
||||||
|
switch calldataload(0)
|
||||||
|
case 0 { mstore(0, x) }
|
||||||
|
case 1 { mstore(0, x) }
|
||||||
|
|
||||||
|
sstore(0, mload(0))
|
||||||
|
}
|
||||||
|
// ----
|
||||||
|
// step: loadResolver
|
||||||
|
//
|
||||||
|
// {
|
||||||
|
// {
|
||||||
|
// let x := calldataload(1)
|
||||||
|
// let _2 := 0
|
||||||
|
// switch calldataload(_2)
|
||||||
|
// case 0 { mstore(_2, x) }
|
||||||
|
// case 1 { mstore(_2, x) }
|
||||||
|
// sstore(_2, mload(_2))
|
||||||
|
// }
|
||||||
|
// }
|
@ -0,0 +1,22 @@
|
|||||||
|
{
|
||||||
|
let x := calldataload(1)
|
||||||
|
|
||||||
|
switch calldataload(0)
|
||||||
|
case 0 { revert(0, 0) }
|
||||||
|
case 1 { mstore(0, x) }
|
||||||
|
|
||||||
|
sstore(0, mload(0))
|
||||||
|
}
|
||||||
|
// ----
|
||||||
|
// step: loadResolver
|
||||||
|
//
|
||||||
|
// {
|
||||||
|
// {
|
||||||
|
// let x := calldataload(1)
|
||||||
|
// let _2 := 0
|
||||||
|
// switch calldataload(_2)
|
||||||
|
// case 0 { revert(_2, _2) }
|
||||||
|
// case 1 { mstore(_2, x) }
|
||||||
|
// sstore(_2, mload(_2))
|
||||||
|
// }
|
||||||
|
// }
|
Loading…
Reference in New Issue
Block a user