mirror of
https://github.com/ethereum/solidity
synced 2023-10-03 13:03:40 +00:00
some tests
This commit is contained in:
parent
591cb938bc
commit
3fdca88711
@ -0,0 +1,45 @@
|
|||||||
|
{
|
||||||
|
let x := 10
|
||||||
|
switch calldataload(0)
|
||||||
|
case 0 {
|
||||||
|
x := 2
|
||||||
|
}
|
||||||
|
case 1 {
|
||||||
|
if calldataload(2) { revert(0, 0) }
|
||||||
|
}
|
||||||
|
// this should not be replaced by x
|
||||||
|
sstore(0, 10)
|
||||||
|
|
||||||
|
function f(arg) -> r {
|
||||||
|
switch calldataload(0)
|
||||||
|
case 0 {
|
||||||
|
r := 2
|
||||||
|
}
|
||||||
|
case 1 {
|
||||||
|
if calldataload(2) { revert(0, 0) }
|
||||||
|
}
|
||||||
|
// this should not be replaced by r
|
||||||
|
sstore(0, 0)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
// ----
|
||||||
|
// step: commonSubexpressionEliminator
|
||||||
|
//
|
||||||
|
// {
|
||||||
|
// let x := 10
|
||||||
|
// switch calldataload(0)
|
||||||
|
// case 0 { x := 2 }
|
||||||
|
// case 1 {
|
||||||
|
// if calldataload(2) { revert(0, 0) }
|
||||||
|
// }
|
||||||
|
// sstore(0, 10)
|
||||||
|
// function f(arg) -> r
|
||||||
|
// {
|
||||||
|
// switch calldataload(0)
|
||||||
|
// case 0 { r := 2 }
|
||||||
|
// case 1 {
|
||||||
|
// if calldataload(2) { revert(0, 0) }
|
||||||
|
// }
|
||||||
|
// sstore(0, 0)
|
||||||
|
// }
|
||||||
|
// }
|
@ -0,0 +1,37 @@
|
|||||||
|
{
|
||||||
|
let var_x_mpos := mload(0x40)
|
||||||
|
let var_r := 0
|
||||||
|
let var_i := 0
|
||||||
|
for { }
|
||||||
|
lt(var_i, mload(var_x_mpos))
|
||||||
|
{
|
||||||
|
// "not(0)" does not work here - can we
|
||||||
|
// use a different step to do the bulk of the work here?
|
||||||
|
if eq(var_i, 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) { revert(0, 0) }
|
||||||
|
var_i := add(var_i, 1)
|
||||||
|
}
|
||||||
|
{
|
||||||
|
let _1_1 := mload(add(add(var_x_mpos, shl(5, var_i)), 32))
|
||||||
|
if gt(var_r, not(_1_1)) { revert(0, 0) }
|
||||||
|
var_r := add(var_r, _1_1)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
// ----
|
||||||
|
// step: reasoningBasedSimplifier
|
||||||
|
//
|
||||||
|
// {
|
||||||
|
// let var_x_mpos := mload(0x40)
|
||||||
|
// let var_r := 0
|
||||||
|
// let var_i := 0
|
||||||
|
// for { }
|
||||||
|
// lt(var_i, mload(var_x_mpos))
|
||||||
|
// {
|
||||||
|
// if 0 { }
|
||||||
|
// var_i := add(var_i, 1)
|
||||||
|
// }
|
||||||
|
// {
|
||||||
|
// let _1_1 := mload(add(add(var_x_mpos, shl(5, var_i)), 32))
|
||||||
|
// if gt(var_r, not(_1_1)) { revert(0, 0) }
|
||||||
|
// var_r := add(var_r, _1_1)
|
||||||
|
// }
|
||||||
|
// }
|
Loading…
Reference in New Issue
Block a user