diff --git a/test/libyul/yulOptimizerTests/controlFlowSimplifier/terminating_for.yul b/test/libyul/yulOptimizerTests/controlFlowSimplifier/terminating_for.yul new file mode 100644 index 000000000..6f7390d53 --- /dev/null +++ b/test/libyul/yulOptimizerTests/controlFlowSimplifier/terminating_for.yul @@ -0,0 +1,12 @@ +{ + for {} calldatasize() { mstore(1, 2) } { + mstore(4, 5) + break + } +} +// ==== +// step: controlFlowSimplifier +// ---- +// { +// if calldatasize() { mstore(4, 5) } +// } diff --git a/test/libyul/yulOptimizerTests/controlFlowSimplifier/terminating_for_nested.yul b/test/libyul/yulOptimizerTests/controlFlowSimplifier/terminating_for_nested.yul new file mode 100644 index 000000000..2b6397269 --- /dev/null +++ b/test/libyul/yulOptimizerTests/controlFlowSimplifier/terminating_for_nested.yul @@ -0,0 +1,21 @@ +{ + for {} calldatasize() { mstore(8, 9) } { + for {} calldatasize() { mstore(1, 2) } { + mstore(4, 5) + break + } + if mload(10) { continue } + break + } +} +// ==== +// step: controlFlowSimplifier +// ---- +// { +// for { } calldatasize() { mstore(8, 9) } +// { +// if calldatasize() { mstore(4, 5) } +// if mload(10) { continue } +// break +// } +// } diff --git a/test/libyul/yulOptimizerTests/controlFlowSimplifier/terminating_for_nested_reversed.yul b/test/libyul/yulOptimizerTests/controlFlowSimplifier/terminating_for_nested_reversed.yul new file mode 100644 index 000000000..5412a7952 --- /dev/null +++ b/test/libyul/yulOptimizerTests/controlFlowSimplifier/terminating_for_nested_reversed.yul @@ -0,0 +1,22 @@ +{ + for {} calldatasize() { mstore(8, 9) } { + for {} calldatasize() { mstore(1, 2) } { + mstore(4, 5) + continue + } + break + } +} +// ==== +// step: controlFlowSimplifier +// ---- +// { +// if calldatasize() +// { +// for { } calldatasize() { mstore(1, 2) } +// { +// mstore(4, 5) +// continue +// } +// } +// } diff --git a/test/libyul/yulOptimizerTests/controlFlowSimplifier/terminating_for_revert.yul b/test/libyul/yulOptimizerTests/controlFlowSimplifier/terminating_for_revert.yul new file mode 100644 index 000000000..d6f7e5d18 --- /dev/null +++ b/test/libyul/yulOptimizerTests/controlFlowSimplifier/terminating_for_revert.yul @@ -0,0 +1,18 @@ +{ + for {} calldatasize() { mstore(1, 2) } { + let x := 7 + mstore(4, 5) + revert(0, x) + } +} +// ==== +// step: controlFlowSimplifier +// ---- +// { +// if calldatasize() +// { +// let x := 7 +// mstore(4, 5) +// revert(0, x) +// } +// } diff --git a/test/libyul/yulOptimizerTests/controlFlowSimplifier/terminating_for_revert_plus_break.yul b/test/libyul/yulOptimizerTests/controlFlowSimplifier/terminating_for_revert_plus_break.yul new file mode 100644 index 000000000..7ef55bc3c --- /dev/null +++ b/test/libyul/yulOptimizerTests/controlFlowSimplifier/terminating_for_revert_plus_break.yul @@ -0,0 +1,20 @@ +{ + for {} calldatasize() { mstore(1, 2) } { + let x := 7 + mstore(4, 5) + break + revert(0, x) + } +} +// ==== +// step: controlFlowSimplifier +// ---- +// { +// for { } calldatasize() { mstore(1, 2) } +// { +// let x := 7 +// mstore(4, 5) +// break +// revert(0, x) +// } +// } diff --git a/test/libyul/yulOptimizerTests/controlFlowSimplifier/terminating_for_with_continue.yul b/test/libyul/yulOptimizerTests/controlFlowSimplifier/terminating_for_with_continue.yul new file mode 100644 index 000000000..9d5ce5b84 --- /dev/null +++ b/test/libyul/yulOptimizerTests/controlFlowSimplifier/terminating_for_with_continue.yul @@ -0,0 +1,18 @@ +{ + for {} calldatasize() { mstore(1, 2) } { + if calldatasize() { continue } + mstore(4, 5) + break + } +} +// ==== +// step: controlFlowSimplifier +// ---- +// { +// for { } calldatasize() { mstore(1, 2) } +// { +// if calldatasize() { continue } +// mstore(4, 5) +// break +// } +// }