mirror of
https://github.com/ethereum/solidity
synced 2023-10-03 13:03:40 +00:00
Tests.
This commit is contained in:
parent
7b84e141dc
commit
143471fe87
11
test/libyul/functionSideEffects/mload_in_function.yul
Normal file
11
test/libyul/functionSideEffects/mload_in_function.yul
Normal 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
|
@ -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)
|
||||
// }
|
||||
|
@ -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))
|
||||
// }
|
Loading…
Reference in New Issue
Block a user