solidity/test/libyul/yulOptimizerTests/redundantAssignEliminator/for_multi_break.yul

75 lines
1.3 KiB
Plaintext
Raw Normal View History

{
let x := 1
let y := 1
let z := 1
for { } calldataload(0) { mstore(x, 2) mstore(z, 2) }
{
y := 3
switch callvalue()
case 0 {
x := 2
y := 2
z := 2
break
}
case 1 {
x := 3
y := 3
z := 3
continue
}
case 2 {
x := 4
y := 4
z := 4
break
}
case 3 {
x := 5
y := 5
z := 5
continue
}
mstore(y, 9)
}
mstore(x, 0x42)
}
// ----
// step: redundantAssignEliminator
//
// {
// let x := 1
// let y := 1
// let z := 1
// for { }
// calldataload(0)
// {
// mstore(x, 2)
// mstore(z, 2)
// }
// {
// y := 3
// switch callvalue()
// case 0 {
// x := 2
// break
// }
// case 1 {
// x := 3
// z := 3
// continue
// }
// case 2 {
// x := 4
// break
// }
// case 3 {
// x := 5
// z := 5
// continue
// }
// mstore(y, 9)
// }
// mstore(x, 0x42)
// }