some tests

This commit is contained in:
chriseth 2022-04-27 15:40:35 +02:00
parent 591cb938bc
commit 3fdca88711
2 changed files with 82 additions and 0 deletions

View File

@ -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)
// }
// }

View File

@ -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)
// }
// }