mirror of
https://github.com/ethereum/solidity
synced 2023-10-03 13:03:40 +00:00
Merge pull request #5325 from ethereum/fixDataFlow
[Yul] Fix data flow analyzer for function definitions.
This commit is contained in:
@@ -0,0 +1,52 @@
|
||||
{
|
||||
let _13 := 0x20
|
||||
let _14 := allocate(_13)
|
||||
pop(_14)
|
||||
let _15 := 2
|
||||
let _16 := 3
|
||||
let _17 := 0x40
|
||||
let _18 := allocate(_17)
|
||||
let _19 := array_index_access(_18, _16)
|
||||
mstore(_19, _15)
|
||||
function allocate(size) -> p
|
||||
{
|
||||
let _1 := 0x40
|
||||
let p_2 := mload(_1)
|
||||
p := p_2
|
||||
let _20 := add(p_2, size)
|
||||
mstore(_1, _20)
|
||||
}
|
||||
function array_index_access(array, index) -> p_1
|
||||
{
|
||||
let _21 := 0x20
|
||||
let _22 := mul(index, _21)
|
||||
p_1 := add(array, _22)
|
||||
}
|
||||
}
|
||||
// ----
|
||||
// commonSubexpressionEliminator
|
||||
// {
|
||||
// let _13 := 0x20
|
||||
// let _14 := allocate(_13)
|
||||
// pop(_14)
|
||||
// let _15 := 2
|
||||
// let _16 := 3
|
||||
// let _17 := 0x40
|
||||
// let _18 := allocate(_17)
|
||||
// let _19 := array_index_access(_18, _16)
|
||||
// mstore(_19, _15)
|
||||
// function allocate(size) -> p
|
||||
// {
|
||||
// let _1 := 0x40
|
||||
// let p_2 := mload(_1)
|
||||
// p := p_2
|
||||
// let _20 := add(p_2, size)
|
||||
// mstore(_1, _20)
|
||||
// }
|
||||
// function array_index_access(array, index) -> p_1
|
||||
// {
|
||||
// let _21 := 0x20
|
||||
// let _22 := mul(index, _21)
|
||||
// p_1 := add(array, _22)
|
||||
// }
|
||||
// }
|
||||
@@ -0,0 +1,52 @@
|
||||
{
|
||||
function allocate(size) -> p
|
||||
{
|
||||
let _1 := 0x40
|
||||
p := mload(_1)
|
||||
let _2 := add(p, size)
|
||||
let _3 := 0x40
|
||||
mstore(_3, _2)
|
||||
}
|
||||
function array_index_access(array, index) -> p_1
|
||||
{
|
||||
let _4 := 0x20
|
||||
let _5 := mul(index, _4)
|
||||
p_1 := add(array, _5)
|
||||
}
|
||||
let _6 := 0x20
|
||||
let _7 := allocate(_6)
|
||||
pop(_7)
|
||||
let _8 := 0x40
|
||||
let x := allocate(_8)
|
||||
let _9 := 2
|
||||
let _10 := 3
|
||||
let _11 := array_index_access(x, _10)
|
||||
mstore(_11, _9)
|
||||
}
|
||||
// ----
|
||||
// commonSubexpressionEliminator
|
||||
// {
|
||||
// function allocate(size) -> p
|
||||
// {
|
||||
// let _1 := 0x40
|
||||
// p := mload(_1)
|
||||
// let _2 := add(p, size)
|
||||
// let _3 := _1
|
||||
// mstore(_1, _2)
|
||||
// }
|
||||
// function array_index_access(array, index) -> p_1
|
||||
// {
|
||||
// let _4 := 0x20
|
||||
// let _5 := mul(index, _4)
|
||||
// p_1 := add(array, _5)
|
||||
// }
|
||||
// let _6 := 0x20
|
||||
// let _7 := allocate(_6)
|
||||
// pop(_7)
|
||||
// let _8 := 0x40
|
||||
// let x := allocate(_8)
|
||||
// let _9 := 2
|
||||
// let _10 := 3
|
||||
// let _11 := array_index_access(x, _10)
|
||||
// mstore(_11, _9)
|
||||
// }
|
||||
Reference in New Issue
Block a user