mirror of
https://github.com/ethereum/solidity
synced 2023-10-03 13:03:40 +00:00
Improved branch handling in data flow analyzer.
This commit is contained in:
@@ -0,0 +1,21 @@
|
||||
{
|
||||
let x := 0
|
||||
switch calldataload(0)
|
||||
case 0 {
|
||||
x := calldataload(99)
|
||||
}
|
||||
case 1 {
|
||||
if 0 { revert(0, 0) }
|
||||
}
|
||||
sstore(0, x)
|
||||
}
|
||||
// ----
|
||||
// step: fullSuite
|
||||
//
|
||||
// {
|
||||
// {
|
||||
// let x := 0
|
||||
// if iszero(calldataload(x)) { x := calldataload(99) }
|
||||
// sstore(0, x)
|
||||
// }
|
||||
// }
|
||||
@@ -0,0 +1,29 @@
|
||||
{
|
||||
let b := mload(2)
|
||||
mstore(0, b)
|
||||
if calldataload(1) {
|
||||
mstore(2, 7)
|
||||
mstore(0, 7)
|
||||
return(0, 0)
|
||||
}
|
||||
sstore(0, mload(0))
|
||||
}
|
||||
// ----
|
||||
// step: loadResolver
|
||||
//
|
||||
// {
|
||||
// {
|
||||
// let _1 := 2
|
||||
// let b := mload(_1)
|
||||
// let _2 := 0
|
||||
// mstore(_2, b)
|
||||
// if calldataload(1)
|
||||
// {
|
||||
// let _5 := 7
|
||||
// mstore(_1, _5)
|
||||
// mstore(_2, _5)
|
||||
// return(_2, _2)
|
||||
// }
|
||||
// sstore(_2, b)
|
||||
// }
|
||||
// }
|
||||
@@ -16,7 +16,7 @@
|
||||
// case 1 { b := 1 }
|
||||
// default {
|
||||
// let x := 1
|
||||
// let y := b
|
||||
// let y := 2
|
||||
// b := 1
|
||||
// }
|
||||
// pop(add(1, b))
|
||||
|
||||
Reference in New Issue
Block a user