diff --git a/test/libyul/yulOptimizerTests/loadResolver/if_non_revert.yul b/test/libyul/yulOptimizerTests/loadResolver/if_non_revert.yul new file mode 100644 index 000000000..ed3f26ccf --- /dev/null +++ b/test/libyul/yulOptimizerTests/loadResolver/if_non_revert.yul @@ -0,0 +1,26 @@ +{ + let x := calldataload(1) + + mstore(0, x) + + if calldataload(0) + { x := 7 mstore(0, 2) } + + sstore(0, mload(0)) +} +// ---- +// step: loadResolver +// +// { +// { +// let x := calldataload(1) +// let _2 := 0 +// mstore(_2, x) +// if calldataload(_2) +// { +// x := 7 +// mstore(_2, 2) +// } +// sstore(_2, mload(_2)) +// } +// } diff --git a/test/libyul/yulOptimizerTests/loadResolver/if_revert.yul b/test/libyul/yulOptimizerTests/loadResolver/if_revert.yul new file mode 100644 index 000000000..c0d5c9f2e --- /dev/null +++ b/test/libyul/yulOptimizerTests/loadResolver/if_revert.yul @@ -0,0 +1,27 @@ +{ + let x := calldataload(1) + + mstore(0, x) + + if calldataload(0) + { x := 7 mstore(0, 2) revert(0, 0x20) } + + sstore(0, mload(0)) +} +// ---- +// step: loadResolver +// +// { +// { +// let x := calldataload(1) +// let _2 := 0 +// mstore(_2, x) +// if calldataload(_2) +// { +// x := 7 +// mstore(_2, 2) +// revert(_2, 0x20) +// } +// sstore(_2, x) +// } +// } diff --git a/test/libyul/yulOptimizerTests/loadResolver/switch_reassign_non_revert.yul b/test/libyul/yulOptimizerTests/loadResolver/switch_reassign_non_revert.yul new file mode 100644 index 000000000..a9428901c --- /dev/null +++ b/test/libyul/yulOptimizerTests/loadResolver/switch_reassign_non_revert.yul @@ -0,0 +1,25 @@ +{ + let x := calldataload(1) + + switch calldataload(0) + case 0 { revert(0, 0) } + default { mstore(0, x) x := 7 } + + sstore(0, mload(0)) +} +// ---- +// step: loadResolver +// +// { +// { +// let x := calldataload(1) +// let _2 := 0 +// switch calldataload(_2) +// case 0 { revert(_2, _2) } +// default { +// mstore(_2, x) +// x := 7 +// } +// sstore(_2, mload(_2)) +// } +// } diff --git a/test/libyul/yulOptimizerTests/loadResolver/switch_reassign_revert.yul b/test/libyul/yulOptimizerTests/loadResolver/switch_reassign_revert.yul new file mode 100644 index 000000000..b0c856cb2 --- /dev/null +++ b/test/libyul/yulOptimizerTests/loadResolver/switch_reassign_revert.yul @@ -0,0 +1,25 @@ +{ + let x := calldataload(1) + + switch calldataload(0) + case 0 { x := 7 revert(0, 0) } + default { mstore(0, x) } + + sstore(0, mload(0)) +} +// ---- +// step: loadResolver +// +// { +// { +// let x := calldataload(1) +// let _2 := 0 +// switch calldataload(_2) +// case 0 { +// x := 7 +// revert(_2, _2) +// } +// default { mstore(_2, x) } +// sstore(_2, x) +// } +// } diff --git a/test/libyul/yulOptimizerTests/loadResolver/switch_with_default.yul b/test/libyul/yulOptimizerTests/loadResolver/switch_with_default.yul new file mode 100644 index 000000000..d23ab1af9 --- /dev/null +++ b/test/libyul/yulOptimizerTests/loadResolver/switch_with_default.yul @@ -0,0 +1,22 @@ +{ + let x := calldataload(1) + + switch calldataload(0) + case 0 { mstore(0, x) } + default { mstore(0, x) } + + sstore(0, mload(0)) +} +// ---- +// step: loadResolver +// +// { +// { +// let x := calldataload(1) +// let _2 := 0 +// switch calldataload(_2) +// case 0 { mstore(_2, x) } +// default { mstore(_2, x) } +// sstore(_2, x) +// } +// } diff --git a/test/libyul/yulOptimizerTests/loadResolver/switch_with_default_reverting.yul b/test/libyul/yulOptimizerTests/loadResolver/switch_with_default_reverting.yul new file mode 100644 index 000000000..3e871343c --- /dev/null +++ b/test/libyul/yulOptimizerTests/loadResolver/switch_with_default_reverting.yul @@ -0,0 +1,22 @@ +{ + let x := calldataload(1) + + switch calldataload(0) + case 0 { revert(0, 0) } + default { mstore(0, x) } + + sstore(0, mload(0)) +} +// ---- +// step: loadResolver +// +// { +// { +// let x := calldataload(1) +// let _2 := 0 +// switch calldataload(_2) +// case 0 { revert(_2, _2) } +// default { mstore(_2, x) } +// sstore(_2, x) +// } +// } diff --git a/test/libyul/yulOptimizerTests/loadResolver/switch_without_default.yul b/test/libyul/yulOptimizerTests/loadResolver/switch_without_default.yul new file mode 100644 index 000000000..01c8c561b --- /dev/null +++ b/test/libyul/yulOptimizerTests/loadResolver/switch_without_default.yul @@ -0,0 +1,22 @@ +{ + let x := calldataload(1) + + switch calldataload(0) + case 0 { mstore(0, x) } + case 1 { mstore(0, x) } + + sstore(0, mload(0)) +} +// ---- +// step: loadResolver +// +// { +// { +// let x := calldataload(1) +// let _2 := 0 +// switch calldataload(_2) +// case 0 { mstore(_2, x) } +// case 1 { mstore(_2, x) } +// sstore(_2, mload(_2)) +// } +// } diff --git a/test/libyul/yulOptimizerTests/loadResolver/switch_without_default_reverting.yul b/test/libyul/yulOptimizerTests/loadResolver/switch_without_default_reverting.yul new file mode 100644 index 000000000..67d4b434e --- /dev/null +++ b/test/libyul/yulOptimizerTests/loadResolver/switch_without_default_reverting.yul @@ -0,0 +1,22 @@ +{ + let x := calldataload(1) + + switch calldataload(0) + case 0 { revert(0, 0) } + case 1 { mstore(0, x) } + + sstore(0, mload(0)) +} +// ---- +// step: loadResolver +// +// { +// { +// let x := calldataload(1) +// let _2 := 0 +// switch calldataload(_2) +// case 0 { revert(_2, _2) } +// case 1 { mstore(_2, x) } +// sstore(_2, mload(_2)) +// } +// }