aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorchriseth <chris@ethereum.org>2019-01-08 22:19:35 +0800
committerchriseth <chris@ethereum.org>2019-01-08 23:02:14 +0800
commit5b8b016fae761866a4652285fb193123a0f5f11e (patch)
treea2da2a750fc17f2b7de81628122e3674594626c5
parent884d51c1f2bfc5aca7b69f6efe5fd8c475ce0dcc (diff)
downloaddexon-solidity-5b8b016fae761866a4652285fb193123a0f5f11e.tar
dexon-solidity-5b8b016fae761866a4652285fb193123a0f5f11e.tar.gz
dexon-solidity-5b8b016fae761866a4652285fb193123a0f5f11e.tar.bz2
dexon-solidity-5b8b016fae761866a4652285fb193123a0f5f11e.tar.lz
dexon-solidity-5b8b016fae761866a4652285fb193123a0f5f11e.tar.xz
dexon-solidity-5b8b016fae761866a4652285fb193123a0f5f11e.tar.zst
dexon-solidity-5b8b016fae761866a4652285fb193123a0f5f11e.zip
Use the block flattener.
-rw-r--r--libyul/optimiser/Suite.cpp8
-rw-r--r--test/libyul/yulOptimizerTests/fullSuite/abi2.yul74
-rw-r--r--test/libyul/yulOptimizerTests/fullSuite/abi_example1.yul134
-rw-r--r--test/libyul/yulOptimizerTests/fullSuite/aztec.yul208
-rw-r--r--test/libyul/yulOptimizerTests/fullSuite/medium.yul14
5 files changed, 206 insertions, 232 deletions
diff --git a/libyul/optimiser/Suite.cpp b/libyul/optimiser/Suite.cpp
index e10916ea..48914cf8 100644
--- a/libyul/optimiser/Suite.cpp
+++ b/libyul/optimiser/Suite.cpp
@@ -22,6 +22,7 @@
#include <libyul/optimiser/Disambiguator.h>
#include <libyul/optimiser/VarDeclInitializer.h>
+#include <libyul/optimiser/BlockFlattener.h>
#include <libyul/optimiser/FunctionGrouper.h>
#include <libyul/optimiser/FunctionHoister.h>
#include <libyul/optimiser/ExpressionSplitter.h>
@@ -59,8 +60,10 @@ void OptimiserSuite::run(
(VarDeclInitializer{})(ast);
(FunctionHoister{})(ast);
+ (BlockFlattener{})(ast);
(FunctionGrouper{})(ast);
(ForLoopInitRewriter{})(ast);
+ (BlockFlattener{})(ast);
StructuralSimplifier{_dialect}(ast);
NameDispenser dispenser{_dialect, ast};
@@ -75,6 +78,7 @@ void OptimiserSuite::run(
CommonSubexpressionEliminator{_dialect}(ast);
ExpressionSimplifier::run(_dialect, ast);
StructuralSimplifier{_dialect}(ast);
+ (BlockFlattener{})(ast);
SSATransform::run(ast, dispenser);
RedundantAssignEliminator::run(_dialect, ast);
RedundantAssignEliminator::run(_dialect, ast);
@@ -95,12 +99,16 @@ void OptimiserSuite::run(
RedundantAssignEliminator::run(_dialect, ast);
RedundantAssignEliminator::run(_dialect, ast);
CommonSubexpressionEliminator{_dialect}(ast);
+
+ (FunctionGrouper{})(ast);
FullInliner{ast, dispenser}.run();
+
SSATransform::run(ast, dispenser);
RedundantAssignEliminator::run(_dialect, ast);
RedundantAssignEliminator::run(_dialect, ast);
ExpressionSimplifier::run(_dialect, ast);
StructuralSimplifier{_dialect}(ast);
+ (BlockFlattener{})(ast);
CommonSubexpressionEliminator{_dialect}(ast);
SSATransform::run(ast, dispenser);
RedundantAssignEliminator::run(_dialect, ast);
diff --git a/test/libyul/yulOptimizerTests/fullSuite/abi2.yul b/test/libyul/yulOptimizerTests/fullSuite/abi2.yul
index d61980ba..092acfbe 100644
--- a/test/libyul/yulOptimizerTests/fullSuite/abi2.yul
+++ b/test/libyul/yulOptimizerTests/fullSuite/abi2.yul
@@ -1059,54 +1059,36 @@
// ----
// fullSuite
// {
+// let _1 := 1
+// let _2 := mload(_1)
+// let _3 := 0
+// let _1017 := mload(_3)
+// if slt(sub(_2, _1017), 64)
// {
-// let _1 := 1
-// let _2 := mload(_1)
-// let _3 := 0
-// let _1017 := mload(_3)
-// let abi_decode_value0_156 := _3
-// if slt(sub(_2, _1017), 64)
-// {
-// revert(_3, _3)
-// }
-// {
-// abi_decode_value0_156 := and(calldataload(_1017), 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF)
-// }
-// sstore(_3, abi_decode_value0_156)
-// let _1019 := mload(8)
-// let _1021 := mload(7)
-// let abi_decode_value0_57 := _3
-// let abi_decode_value1_58 := _3
-// let abi_decode_value2_59 := _3
-// let abi_decode_value3 := _3
-// let abi_decode_value4 := _3
-// if slt(sub(_1019, _1021), 128)
-// {
-// revert(_3, _3)
-// }
-// {
-// abi_decode_value0_57 := and(calldataload(_1021), 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF)
-// }
-// {
-// abi_decode_value1_58 := calldataload(add(_1021, 32))
-// }
-// {
-// let abi_decode_offset_62 := calldataload(add(_1021, 64))
-// if gt(abi_decode_offset_62, 0xffffffffffffffff)
-// {
-// revert(_3, _3)
-// }
-// abi_decode_value2_59, abi_decode_value3 := abi_decode_t_bytes_calldata_ptr(add(_1021, abi_decode_offset_62), _1019)
-// }
-// {
-// abi_decode_value4 := cleanup_revert_t_enum$_Operation_$1949(calldataload(add(_1021, 96)))
-// }
-// sstore(_1, abi_decode_value0_57)
-// sstore(_1, abi_decode_value1_58)
-// sstore(_1, _3)
-// sstore(_1, _3)
-// sstore(_1, abi_decode_value4)
+// revert(_3, _3)
+// }
+// let _1145 := 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+// sstore(_3, and(calldataload(_1017), _1145))
+// let _1019 := mload(8)
+// let _1021 := mload(7)
+// let abi_decode_value2_59 := _3
+// let abi_decode_value3 := _3
+// if slt(sub(_1019, _1021), 128)
+// {
+// revert(_3, _3)
+// }
+// let abi_decode_offset_62 := calldataload(add(_1021, 64))
+// if gt(abi_decode_offset_62, 0xffffffffffffffff)
+// {
+// revert(_3, _3)
// }
+// abi_decode_value2_59, abi_decode_value3 := abi_decode_t_bytes_calldata_ptr(add(_1021, abi_decode_offset_62), _1019)
+// let abi_decode_value4_1063 := cleanup_revert_t_enum$_Operation_$1949(calldataload(add(_1021, 96)))
+// sstore(_1, and(calldataload(_1021), _1145))
+// sstore(_1, calldataload(add(_1021, 32)))
+// sstore(_1, _3)
+// sstore(_1, _3)
+// sstore(_1, abi_decode_value4_1063)
// function abi_decode_t_bytes_calldata_ptr(offset_12, end_13) -> arrayPos_14, length_15
// {
// if iszero(slt(add(offset_12, 0x1f), end_13))
diff --git a/test/libyul/yulOptimizerTests/fullSuite/abi_example1.yul b/test/libyul/yulOptimizerTests/fullSuite/abi_example1.yul
index b261b5bc..c8acf465 100644
--- a/test/libyul/yulOptimizerTests/fullSuite/abi_example1.yul
+++ b/test/libyul/yulOptimizerTests/fullSuite/abi_example1.yul
@@ -458,45 +458,43 @@
// ----
// fullSuite
// {
+// let _1 := 0x20
+// let _485 := mload(0)
+// let abi_encode_pos := _1
+// let abi_encode_length_68 := mload(_485)
+// mstore(_1, abi_encode_length_68)
+// abi_encode_pos := 64
+// let abi_encode_srcPtr := add(_485, _1)
+// let abi_encode_i_69 := 0
+// for {
+// }
+// lt(abi_encode_i_69, abi_encode_length_68)
+// {
+// abi_encode_i_69 := add(abi_encode_i_69, 1)
+// }
// {
-// let _1 := 0x20
-// let _485 := mload(0)
-// let abi_encode_pos := _1
-// let abi_encode_length_68 := mload(_485)
-// mstore(_1, abi_encode_length_68)
-// abi_encode_pos := 64
-// let abi_encode_srcPtr := add(_485, _1)
-// let abi_encode_i_69 := 0
+// let _874 := mload(abi_encode_srcPtr)
+// let abi_encode_pos_71_978 := abi_encode_pos
+// let abi_encode_srcPtr_73_980 := _874
+// let abi_encode_i_74_981 := 0
// for {
// }
-// lt(abi_encode_i_69, abi_encode_length_68)
+// lt(abi_encode_i_74_981, 0x3)
// {
-// abi_encode_i_69 := add(abi_encode_i_69, 1)
+// abi_encode_i_74_981 := add(abi_encode_i_74_981, 1)
// }
// {
-// let _863 := mload(abi_encode_srcPtr)
-// let abi_encode_pos_71_971 := abi_encode_pos
-// let abi_encode_srcPtr_73_973 := _863
-// let abi_encode_i_74_974 := 0
-// for {
-// }
-// lt(abi_encode_i_74_974, 0x3)
-// {
-// abi_encode_i_74_974 := add(abi_encode_i_74_974, 1)
-// }
-// {
-// mstore(abi_encode_pos_71_971, and(mload(abi_encode_srcPtr_73_973), 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF))
-// abi_encode_srcPtr_73_973 := add(abi_encode_srcPtr_73_973, _1)
-// abi_encode_pos_71_971 := add(abi_encode_pos_71_971, _1)
-// }
-// abi_encode_srcPtr := add(abi_encode_srcPtr, _1)
-// abi_encode_pos := add(abi_encode_pos, 0x60)
+// mstore(abi_encode_pos_71_978, and(mload(abi_encode_srcPtr_73_980), 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF))
+// abi_encode_srcPtr_73_980 := add(abi_encode_srcPtr_73_980, _1)
+// abi_encode_pos_71_978 := add(abi_encode_pos_71_978, _1)
// }
-// let a, b, c, d := abi_decode_tuple_t_uint256t_uint256t_array$_t_uint256_$dyn_memory_ptrt_array$_t_array$_t_uint256_$2_memory_$dyn_memory_ptr(mload(_1), mload(0x40))
-// sstore(a, b)
-// sstore(c, d)
-// sstore(0, abi_encode_pos)
+// abi_encode_srcPtr := add(abi_encode_srcPtr, _1)
+// abi_encode_pos := add(abi_encode_pos, 0x60)
// }
+// let a, b, c, d := abi_decode_tuple_t_uint256t_uint256t_array$_t_uint256_$dyn_memory_ptrt_array$_t_array$_t_uint256_$2_memory_$dyn_memory_ptr(mload(_1), mload(0x40))
+// sstore(a, b)
+// sstore(c, d)
+// sstore(0, abi_encode_pos)
// function abi_decode_t_array$_t_array$_t_uint256_$2_memory_$dyn_memory_ptr(offset_3, end_4) -> array_5
// {
// if iszero(slt(add(offset_3, 0x1f), end_4))
@@ -554,65 +552,55 @@
// src_16 := add(src_16, 0x20)
// }
// }
-// function abi_decode_t_array$_t_uint256_$dyn_memory_ptr(offset_27, end_28) -> array_29
+// function abi_decode_tuple_t_uint256t_uint256t_array$_t_uint256_$dyn_memory_ptrt_array$_t_array$_t_uint256_$2_memory_$dyn_memory_ptr(headStart_58, dataEnd_59) -> value0_60, value1_61, value2, value3
// {
-// if iszero(slt(add(offset_27, 0x1f), end_28))
-// {
-// revert(0, 0)
-// }
-// let length_30 := calldataload(offset_27)
-// let array_29_279 := allocateMemory(array_allocation_size_t_array$_t_uint256_$dyn_memory_ptr(length_30))
-// array_29 := array_29_279
-// let dst_31 := array_29_279
-// mstore(array_29_279, length_30)
-// let _91 := 0x20
-// dst_31 := add(array_29_279, _91)
-// let src_32 := add(offset_27, _91)
-// if gt(add(add(offset_27, mul(length_30, _91)), _91), end_28)
+// if slt(sub(dataEnd_59, headStart_58), 128)
// {
-// revert(0, 0)
-// }
-// let i_33 := 0
-// for {
+// revert(value2, value2)
// }
-// lt(i_33, length_30)
+// value0_60 := calldataload(add(headStart_58, value2))
+// value1_61 := calldataload(add(headStart_58, 32))
+// let offset_64 := calldataload(add(headStart_58, 64))
+// let _165 := 0xffffffffffffffff
+// if gt(offset_64, _165)
// {
-// i_33 := add(i_33, 1)
+// revert(value2, value2)
// }
+// let _532 := add(headStart_58, offset_64)
+// if iszero(slt(add(_532, 0x1f), dataEnd_59))
// {
-// mstore(dst_31, calldataload(src_32))
-// dst_31 := add(dst_31, _91)
-// src_32 := add(src_32, _91)
+// revert(value2, value2)
// }
-// }
-// function abi_decode_tuple_t_uint256t_uint256t_array$_t_uint256_$dyn_memory_ptrt_array$_t_array$_t_uint256_$2_memory_$dyn_memory_ptr(headStart_58, dataEnd_59) -> value0_60, value1_61, value2, value3
-// {
-// if slt(sub(dataEnd_59, headStart_58), 128)
+// let abi_decode_length_30 := calldataload(_532)
+// let abi_decode_array_29_279 := allocateMemory(array_allocation_size_t_array$_t_uint256_$dyn_memory_ptr(abi_decode_length_30))
+// let abi_decode_dst_31 := abi_decode_array_29_279
+// mstore(abi_decode_array_29_279, abi_decode_length_30)
+// let abi_decode__91 := 0x20
+// abi_decode_dst_31 := add(abi_decode_array_29_279, abi_decode__91)
+// let abi_decode_src_32 := add(_532, abi_decode__91)
+// if gt(add(add(_532, mul(abi_decode_length_30, abi_decode__91)), abi_decode__91), dataEnd_59)
// {
// revert(value2, value2)
// }
-// {
-// value0_60 := calldataload(add(headStart_58, value2))
+// let abi_decode_i_33 := value2
+// for {
// }
+// lt(abi_decode_i_33, abi_decode_length_30)
// {
-// value1_61 := calldataload(add(headStart_58, 32))
+// abi_decode_i_33 := add(abi_decode_i_33, 1)
// }
// {
-// let offset_64 := calldataload(add(headStart_58, 64))
-// if gt(offset_64, 0xffffffffffffffff)
-// {
-// revert(value2, value2)
-// }
-// value2 := abi_decode_t_array$_t_uint256_$dyn_memory_ptr(add(headStart_58, offset_64), dataEnd_59)
+// mstore(abi_decode_dst_31, calldataload(abi_decode_src_32))
+// abi_decode_dst_31 := add(abi_decode_dst_31, abi_decode__91)
+// abi_decode_src_32 := add(abi_decode_src_32, abi_decode__91)
// }
+// value2 := abi_decode_array_29_279
+// let offset_65 := calldataload(add(headStart_58, 96))
+// if gt(offset_65, _165)
// {
-// let offset_65 := calldataload(add(headStart_58, 96))
-// if gt(offset_65, 0xffffffffffffffff)
-// {
-// revert(0, 0)
-// }
-// value3 := abi_decode_t_array$_t_array$_t_uint256_$2_memory_$dyn_memory_ptr(add(headStart_58, offset_65), dataEnd_59)
+// revert(0, 0)
// }
+// value3 := abi_decode_t_array$_t_array$_t_uint256_$2_memory_$dyn_memory_ptr(add(headStart_58, offset_65), dataEnd_59)
// }
// function allocateMemory(size) -> memPtr
// {
diff --git a/test/libyul/yulOptimizerTests/fullSuite/aztec.yul b/test/libyul/yulOptimizerTests/fullSuite/aztec.yul
index e43a066c..4fcdaaf1 100644
--- a/test/libyul/yulOptimizerTests/fullSuite/aztec.yul
+++ b/test/libyul/yulOptimizerTests/fullSuite/aztec.yul
@@ -231,124 +231,122 @@
// ----
// fullSuite
// {
+// let validateJo__6 := 0x80
+// mstore(validateJo__6, 7673901602397024137095011250362199966051872585513276903826533215767972925880)
+// mstore(0xa0, 8489654445897228341090914135473290831551238522473825886865492707826370766375)
+// let validateJo__10 := calldataload(0x04)
+// let validateJo_notes := add(0x04, validateJo__10)
+// let validateJo_m := calldataload(0x24)
+// let validateJo_n := calldataload(validateJo_notes)
+// let validateJo_gen_order := 0x30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f0000001
+// let validateJo_challenge := mod(calldataload(0x44), validateJo_gen_order)
+// if gt(validateJo_m, validateJo_n)
// {
-// let validateJo__6 := 0x80
-// mstore(validateJo__6, 7673901602397024137095011250362199966051872585513276903826533215767972925880)
-// mstore(0xa0, 8489654445897228341090914135473290831551238522473825886865492707826370766375)
-// let validateJo__10 := calldataload(0x04)
-// let validateJo_notes := add(0x04, validateJo__10)
-// let validateJo_m := calldataload(0x24)
-// let validateJo_n := calldataload(validateJo_notes)
-// let validateJo_gen_order := 0x30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f0000001
-// let validateJo_challenge := mod(calldataload(0x44), validateJo_gen_order)
-// if gt(validateJo_m, validateJo_n)
-// {
-// mstore(0x00, 404)
-// revert(0x00, 0x20)
+// mstore(0x00, 404)
+// revert(0x00, 0x20)
+// }
+// let validateJo_kn_287 := calldataload(add(calldatasize(), 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff40))
+// let validateJo_kn := validateJo_kn_287
+// let validateJo__24 := 0x2a0
+// mstore(validateJo__24, caller())
+// mstore(0x2c0, validateJo_kn_287)
+// mstore(0x2e0, validateJo_m)
+// validateJo_kn := mulmod(sub(validateJo_gen_order, validateJo_kn_287), validateJo_challenge, validateJo_gen_order)
+// hashCommitments(validateJo_notes, validateJo_n)
+// let validateJo_b := add(0x300, mul(validateJo_n, validateJo__6))
+// let validateJo_i_290 := 0
+// let validateJo_i := validateJo_i_290
+// for {
+// }
+// lt(validateJo_i, validateJo_n)
+// {
+// validateJo_i := add(validateJo_i, 0x01)
+// }
+// {
+// let validateJo__34 := 0x20
+// let validateJo__376 := add(validateJo__10, mul(validateJo_i, 0xc0))
+// let validateJo_noteIndex := add(validateJo__376, 36)
+// let validateJo_k := validateJo_i_290
+// let validateJo_a_292 := calldataload(add(validateJo__376, 68))
+// let validateJo_a := validateJo_a_292
+// let validateJo_c := validateJo_challenge
+// let validateJo__39 := add(validateJo_i, 0x01)
+// switch eq(validateJo__39, validateJo_n)
+// case 1 {
+// validateJo_k := validateJo_kn
+// if eq(validateJo_m, validateJo_n)
+// {
+// validateJo_k := sub(validateJo_gen_order, validateJo_kn)
+// }
// }
-// let validateJo_kn_287 := calldataload(add(calldatasize(), 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff40))
-// let validateJo_kn := validateJo_kn_287
-// let validateJo__24 := 0x2a0
-// mstore(validateJo__24, caller())
-// mstore(0x2c0, validateJo_kn_287)
-// mstore(0x2e0, validateJo_m)
-// validateJo_kn := mulmod(sub(validateJo_gen_order, validateJo_kn_287), validateJo_challenge, validateJo_gen_order)
-// hashCommitments(validateJo_notes, validateJo_n)
-// let validateJo_b := add(0x300, mul(validateJo_n, validateJo__6))
-// let validateJo_i_290 := 0
-// let validateJo_i := validateJo_i_290
-// for {
+// case 0 {
+// validateJo_k := calldataload(validateJo_noteIndex)
// }
-// lt(validateJo_i, validateJo_n)
-// {
-// validateJo_i := add(validateJo_i, 0x01)
+// validateCommitment(validateJo_noteIndex, validateJo_k, validateJo_a_292)
+// switch gt(validateJo__39, validateJo_m)
+// case 1 {
+// validateJo_kn := addmod(validateJo_kn, sub(validateJo_gen_order, validateJo_k), validateJo_gen_order)
+// let validateJo_x := mod(mload(0x00), validateJo_gen_order)
+// validateJo_k := mulmod(validateJo_k, validateJo_x, validateJo_gen_order)
+// validateJo_a := mulmod(validateJo_a_292, validateJo_x, validateJo_gen_order)
+// validateJo_c := mulmod(validateJo_challenge, validateJo_x, validateJo_gen_order)
+// mstore(0x00, keccak256(0x00, validateJo__34))
+// }
+// case 0 {
+// validateJo_kn := addmod(validateJo_kn, validateJo_k, validateJo_gen_order)
// }
+// let validateJo__52 := 0x40
+// calldatacopy(0xe0, add(validateJo__376, 164), validateJo__52)
+// calldatacopy(validateJo__34, add(validateJo__376, 100), validateJo__52)
+// let validateJo__61 := 0x120
+// mstore(validateJo__61, sub(validateJo_gen_order, validateJo_c))
+// let validateJo__62 := 0x60
+// mstore(validateJo__62, validateJo_k)
+// mstore(0xc0, validateJo_a)
+// let validateJo__65 := 0x1a0
+// let validateJo_result_302 := call(gas(), 7, validateJo_i_290, 0xe0, validateJo__62, validateJo__65, validateJo__52)
+// let validateJo_result := validateJo_result_302
+// let validateJo_result_303 := and(validateJo_result_302, call(gas(), 7, validateJo_i_290, validateJo__34, validateJo__62, validateJo__61, validateJo__52))
+// let validateJo__80 := 0x160
+// let validateJo_result_304 := and(validateJo_result_303, call(gas(), 7, validateJo_i_290, validateJo__6, validateJo__62, validateJo__80, validateJo__52))
+// let validateJo_result_305 := and(validateJo_result_304, call(gas(), 6, validateJo_i_290, validateJo__61, validateJo__6, validateJo__80, validateJo__52))
+// let validateJo_result_306 := and(validateJo_result_305, call(gas(), 6, validateJo_i_290, validateJo__80, validateJo__6, validateJo_b, validateJo__52))
+// validateJo_result := validateJo_result_306
+// if eq(validateJo_i, validateJo_m)
// {
-// let validateJo__34 := 0x20
-// let validateJo__376 := add(validateJo__10, mul(validateJo_i, 0xc0))
-// let validateJo_noteIndex := add(validateJo__376, 36)
-// let validateJo_k := validateJo_i_290
-// let validateJo_a_292 := calldataload(add(validateJo__376, 68))
-// let validateJo_a := validateJo_a_292
-// let validateJo_c := validateJo_challenge
-// let validateJo__39 := add(validateJo_i, 0x01)
-// switch eq(validateJo__39, validateJo_n)
-// case 1 {
-// validateJo_k := validateJo_kn
-// if eq(validateJo_m, validateJo_n)
-// {
-// validateJo_k := sub(validateJo_gen_order, validateJo_kn)
-// }
-// }
-// case 0 {
-// validateJo_k := calldataload(validateJo_noteIndex)
-// }
-// validateCommitment(validateJo_noteIndex, validateJo_k, validateJo_a_292)
-// switch gt(validateJo__39, validateJo_m)
-// case 1 {
-// validateJo_kn := addmod(validateJo_kn, sub(validateJo_gen_order, validateJo_k), validateJo_gen_order)
-// let validateJo_x := mod(mload(0x00), validateJo_gen_order)
-// validateJo_k := mulmod(validateJo_k, validateJo_x, validateJo_gen_order)
-// validateJo_a := mulmod(validateJo_a_292, validateJo_x, validateJo_gen_order)
-// validateJo_c := mulmod(validateJo_challenge, validateJo_x, validateJo_gen_order)
-// mstore(0x00, keccak256(0x00, validateJo__34))
-// }
-// case 0 {
-// validateJo_kn := addmod(validateJo_kn, validateJo_k, validateJo_gen_order)
-// }
-// let validateJo__52 := 0x40
-// calldatacopy(0xe0, add(validateJo__376, 164), validateJo__52)
-// calldatacopy(validateJo__34, add(validateJo__376, 100), validateJo__52)
-// let validateJo__61 := 0x120
-// mstore(validateJo__61, sub(validateJo_gen_order, validateJo_c))
-// let validateJo__62 := 0x60
-// mstore(validateJo__62, validateJo_k)
-// mstore(0xc0, validateJo_a)
-// let validateJo__65 := 0x1a0
-// let validateJo_result_302 := call(gas(), 7, validateJo_i_290, 0xe0, validateJo__62, validateJo__65, validateJo__52)
-// let validateJo_result := validateJo_result_302
-// let validateJo_result_303 := and(validateJo_result_302, call(gas(), 7, validateJo_i_290, validateJo__34, validateJo__62, validateJo__61, validateJo__52))
-// let validateJo__80 := 0x160
-// let validateJo_result_304 := and(validateJo_result_303, call(gas(), 7, validateJo_i_290, validateJo__6, validateJo__62, validateJo__80, validateJo__52))
-// let validateJo_result_305 := and(validateJo_result_304, call(gas(), 6, validateJo_i_290, validateJo__61, validateJo__6, validateJo__80, validateJo__52))
-// let validateJo_result_306 := and(validateJo_result_305, call(gas(), 6, validateJo_i_290, validateJo__80, validateJo__6, validateJo_b, validateJo__52))
-// validateJo_result := validateJo_result_306
-// if eq(validateJo_i, validateJo_m)
-// {
-// mstore(0x260, mload(validateJo__34))
-// mstore(0x280, mload(validateJo__52))
-// mstore(0x1e0, mload(0xe0))
-// mstore(0x200, sub(0x30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd47, mload(0x100)))
-// }
-// if gt(validateJo_i, validateJo_m)
-// {
-// mstore(validateJo__62, validateJo_c)
-// let validateJo__120 := 0x220
-// let validateJo_result_307 := and(validateJo_result_306, call(gas(), 7, validateJo_i_290, validateJo__34, validateJo__62, validateJo__120, validateJo__52))
-// let validateJo_result_308 := and(validateJo_result_307, call(gas(), 6, validateJo_i_290, validateJo__120, validateJo__6, 0x260, validateJo__52))
-// validateJo_result := and(validateJo_result_308, call(gas(), 6, validateJo_i_290, validateJo__65, validateJo__6, 0x1e0, validateJo__52))
-// }
-// if iszero(validateJo_result)
-// {
-// mstore(0x00, 400)
-// revert(0x00, validateJo__34)
-// }
-// validateJo_b := add(validateJo_b, validateJo__52)
+// mstore(0x260, mload(validateJo__34))
+// mstore(0x280, mload(validateJo__52))
+// mstore(0x1e0, mload(0xe0))
+// mstore(0x200, sub(0x30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd47, mload(0x100)))
// }
-// if lt(validateJo_m, validateJo_n)
+// if gt(validateJo_i, validateJo_m)
// {
-// validatePairing(0x64)
+// mstore(validateJo__62, validateJo_c)
+// let validateJo__120 := 0x220
+// let validateJo_result_307 := and(validateJo_result_306, call(gas(), 7, validateJo_i_290, validateJo__34, validateJo__62, validateJo__120, validateJo__52))
+// let validateJo_result_308 := and(validateJo_result_307, call(gas(), 6, validateJo_i_290, validateJo__120, validateJo__6, 0x260, validateJo__52))
+// validateJo_result := and(validateJo_result_308, call(gas(), 6, validateJo_i_290, validateJo__65, validateJo__6, 0x1e0, validateJo__52))
// }
-// if iszero(eq(mod(keccak256(validateJo__24, add(validateJo_b, 0xfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd60)), validateJo_gen_order), validateJo_challenge))
+// if iszero(validateJo_result)
// {
-// mstore(0x00, 404)
-// revert(0x00, 0x20)
+// mstore(0x00, 400)
+// revert(0x00, validateJo__34)
// }
-// mstore(0x00, 0x01)
-// return(0x00, 0x20)
+// validateJo_b := add(validateJo_b, validateJo__52)
+// }
+// if lt(validateJo_m, validateJo_n)
+// {
+// validatePairing(0x64)
+// }
+// if iszero(eq(mod(keccak256(validateJo__24, add(validateJo_b, 0xfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd60)), validateJo_gen_order), validateJo_challenge))
+// {
// mstore(0x00, 404)
// revert(0x00, 0x20)
// }
+// mstore(0x00, 0x01)
+// return(0x00, 0x20)
+// mstore(0x00, 404)
+// revert(0x00, 0x20)
// function validatePairing(t2)
// {
// let t2_x_1 := calldataload(t2)
diff --git a/test/libyul/yulOptimizerTests/fullSuite/medium.yul b/test/libyul/yulOptimizerTests/fullSuite/medium.yul
index 5578452a..b10c6c69 100644
--- a/test/libyul/yulOptimizerTests/fullSuite/medium.yul
+++ b/test/libyul/yulOptimizerTests/fullSuite/medium.yul
@@ -19,12 +19,10 @@
// ----
// fullSuite
// {
-// {
-// let allocate__19 := 0x40
-// mstore(allocate__19, add(mload(allocate__19), 0x20))
-// let allocate_p_24_41 := mload(allocate__19)
-// mstore(allocate__19, add(allocate_p_24_41, allocate__19))
-// mstore(add(allocate_p_24_41, 96), 2)
-// mstore(allocate__19, 0x20)
-// }
+// let allocate__19 := 0x40
+// mstore(allocate__19, add(mload(allocate__19), 0x20))
+// let allocate_p_24_41 := mload(allocate__19)
+// mstore(allocate__19, add(allocate_p_24_41, allocate__19))
+// mstore(add(allocate_p_24_41, 96), 2)
+// mstore(allocate__19, 0x20)
// }