diff --git a/test/libyul/yulOptimizerTests/commonSwitchCasePrefixMover/nested_twostep.yul b/test/libyul/yulOptimizerTests/commonSwitchCasePrefixMover/nested_twostep.yul new file mode 100644 index 000000000..3020752aa --- /dev/null +++ b/test/libyul/yulOptimizerTests/commonSwitchCasePrefixMover/nested_twostep.yul @@ -0,0 +1,31 @@ +{ + let a := calldataload(42) + switch a + case 0 { + let b := calldataload(42) + switch b + case 0 { sstore(0, 1) } + default { sstore(0, 1) } + } + default { + let c := calldataload(42) + sstore(0, 1) + switch c + case 0 {} + default {} + } +} +// ---- +// step: commonSwitchCasePrefixMover +// +// { +// let a := calldataload(42) +// let b := calldataload(42) +// sstore(0, 1) +// switch b +// case 0 { } +// default { } +// switch a +// case 0 { } +// default { } +// } diff --git a/test/libyul/yulOptimizerTests/commonSwitchCasePrefixMover/unordered.yul b/test/libyul/yulOptimizerTests/commonSwitchCasePrefixMover/unordered.yul new file mode 100644 index 000000000..d8594e539 --- /dev/null +++ b/test/libyul/yulOptimizerTests/commonSwitchCasePrefixMover/unordered.yul @@ -0,0 +1,36 @@ +{ + let a := calldataload(42) + switch a + case 0 { + let b := calldataload(42) + switch b + case 0 { sstore(0, 1) } + case 1 { sstore(0, 1) } + case 2 { sstore(0, 1) } + default { sstore(0, 1) } + } + default { + let b := calldataload(42) + switch b + case 2 { sstore(0, 1) } + case 1 { sstore(0, 1) } + case 0 { sstore(0, 1) } + default { sstore(0, 1) } + } +} +// ---- +// step: commonSwitchCasePrefixMover +// +// { +// let a := calldataload(42) +// let b := calldataload(42) +// sstore(0, 1) +// switch b +// case 0 { } +// case 1 { } +// case 2 { } +// default { } +// switch a +// case 0 { } +// default { } +// }