This commit is contained in:
chriseth 2019-12-17 13:41:56 +01:00
parent 7b84e141dc
commit 143471fe87
3 changed files with 50 additions and 9 deletions

View File

@ -0,0 +1,11 @@
{
function foo(x) {
for {} x { x := mload(0) mstore(0, 0)} {}
}
mstore(0, 1337)
foo(42)
sstore(0, mload(0))
}
// ----
// : invalidatesStorage, invalidatesMemory
// foo: invalidatesMemory

View File

@ -477,15 +477,16 @@
// pos := add(pos, 0x60)
// }
// let _3 := mload(64)
// if slt(sub(_3, length), 128) { revert(_1, _1) }
// let offset := calldataload(add(length, 64))
// let _4 := 0xffffffffffffffff
// if gt(offset, _4) { revert(_1, _1) }
// let value2 := abi_decode_t_array$_t_uint256_$dyn_memory_ptr(add(length, offset), _3)
// let offset_1 := calldataload(add(length, 0x60))
// if gt(offset_1, _4) { revert(_1, _1) }
// let value3 := abi_decode_t_array$_t_array$_t_uint256_$2_memory_$dyn_memory_ptr(add(length, offset_1), _3)
// sstore(calldataload(length), calldataload(add(length, 0x20)))
// let _4 := mload(0x20)
// if slt(sub(_3, _4), 128) { revert(_1, _1) }
// let offset := calldataload(add(_4, 64))
// let _5 := 0xffffffffffffffff
// if gt(offset, _5) { revert(_1, _1) }
// let value2 := abi_decode_t_array$_t_uint256_$dyn_memory_ptr(add(_4, offset), _3)
// let offset_1 := calldataload(add(_4, 0x60))
// if gt(offset_1, _5) { revert(_1, _1) }
// let value3 := abi_decode_t_array$_t_array$_t_uint256_$2_memory_$dyn_memory_ptr(add(_4, offset_1), _3)
// sstore(calldataload(_4), calldataload(add(_4, 0x20)))
// sstore(value2, value3)
// sstore(_1, pos)
// }

View File

@ -0,0 +1,29 @@
{
function foo(x) {
for {} x { x := mload(0) mstore(0, 0)} {}
}
mstore(0, 1337)
foo(42)
sstore(0, mload(0))
}
// ====
// step: loadResolver
// ----
// {
// function foo(x)
// {
// for { }
// x
// {
// let _1 := 0
// x := mload(_1)
// mstore(_1, _1)
// }
// { }
// }
// let _4 := 1337
// let _5 := 0
// mstore(_5, _4)
// foo(42)
// sstore(_5, mload(_5))
// }