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