diff --git a/test/libyul/YulOptimizerTest.cpp b/test/libyul/YulOptimizerTest.cpp index 03039677d..c2a2b009e 100644 --- a/test/libyul/YulOptimizerTest.cpp +++ b/test/libyul/YulOptimizerTest.cpp @@ -231,10 +231,14 @@ TestCase::TestResult YulOptimizerTest::run(ostream& _stream, string const& _line SSATransform::run(*m_ast, nameDispenser); RedundantAssignEliminator::run(*m_dialect, *m_ast); } - else if (m_optimizerStep == "structuralSimplifier") + else if (m_optimizerStep == "controlFlowSimplifier") { disambiguate(); ControlFlowSimplifier{}(*m_ast); + } + else if (m_optimizerStep == "structuralSimplifier") + { + disambiguate(); StructuralSimplifier{*m_dialect}(*m_ast); } else if (m_optimizerStep == "equivalentFunctionCombiner") diff --git a/test/libyul/yulOptimizerTests/structuralSimplifier/empty_if_movable_condition.yul b/test/libyul/yulOptimizerTests/controlFlowSimplifier/empty_if_movable_condition.yul similarity index 75% rename from test/libyul/yulOptimizerTests/structuralSimplifier/empty_if_movable_condition.yul rename to test/libyul/yulOptimizerTests/controlFlowSimplifier/empty_if_movable_condition.yul index 98adbb596..87450d939 100644 --- a/test/libyul/yulOptimizerTests/structuralSimplifier/empty_if_movable_condition.yul +++ b/test/libyul/yulOptimizerTests/controlFlowSimplifier/empty_if_movable_condition.yul @@ -1,6 +1,6 @@ { let a := mload(0) if a {} } // ==== -// step: structuralSimplifier +// step: controlFlowSimplifier // ---- // { // let a := mload(0) diff --git a/test/libyul/yulOptimizerTests/structuralSimplifier/empty_if_non_movable_condition.yul b/test/libyul/yulOptimizerTests/controlFlowSimplifier/empty_if_non_movable_condition.yul similarity index 64% rename from test/libyul/yulOptimizerTests/structuralSimplifier/empty_if_non_movable_condition.yul rename to test/libyul/yulOptimizerTests/controlFlowSimplifier/empty_if_non_movable_condition.yul index 5059f6687..737ff7bf1 100644 --- a/test/libyul/yulOptimizerTests/structuralSimplifier/empty_if_non_movable_condition.yul +++ b/test/libyul/yulOptimizerTests/controlFlowSimplifier/empty_if_non_movable_condition.yul @@ -1,5 +1,5 @@ { if mload(0) {} } // ==== -// step: structuralSimplifier +// step: controlFlowSimplifier // ---- // { pop(mload(0)) } diff --git a/test/libyul/yulOptimizerTests/structuralSimplifier/switch_only_default.yul b/test/libyul/yulOptimizerTests/controlFlowSimplifier/switch_only_default.yul similarity index 79% rename from test/libyul/yulOptimizerTests/structuralSimplifier/switch_only_default.yul rename to test/libyul/yulOptimizerTests/controlFlowSimplifier/switch_only_default.yul index 05689edd4..16e718d2e 100644 --- a/test/libyul/yulOptimizerTests/structuralSimplifier/switch_only_default.yul +++ b/test/libyul/yulOptimizerTests/controlFlowSimplifier/switch_only_default.yul @@ -2,7 +2,7 @@ switch mload(0) default { mstore(1, 2) } } // ==== -// step: structuralSimplifier +// step: controlFlowSimplifier // ---- // { // pop(mload(0)) diff --git a/test/libyul/yulOptimizerTests/structuralSimplifier/switch_remove_empty_all.yul b/test/libyul/yulOptimizerTests/controlFlowSimplifier/switch_remove_empty_all.yul similarity index 87% rename from test/libyul/yulOptimizerTests/structuralSimplifier/switch_remove_empty_all.yul rename to test/libyul/yulOptimizerTests/controlFlowSimplifier/switch_remove_empty_all.yul index d8febde88..fb2434ec7 100644 --- a/test/libyul/yulOptimizerTests/structuralSimplifier/switch_remove_empty_all.yul +++ b/test/libyul/yulOptimizerTests/controlFlowSimplifier/switch_remove_empty_all.yul @@ -11,7 +11,7 @@ default { } } // ==== -// step: structuralSimplifier +// step: controlFlowSimplifier // ---- // { // let y := 200 diff --git a/test/libyul/yulOptimizerTests/structuralSimplifier/switch_remove_empty_case.yul b/test/libyul/yulOptimizerTests/controlFlowSimplifier/switch_remove_empty_case.yul similarity index 87% rename from test/libyul/yulOptimizerTests/structuralSimplifier/switch_remove_empty_case.yul rename to test/libyul/yulOptimizerTests/controlFlowSimplifier/switch_remove_empty_case.yul index d96f74835..4b4f2cc0c 100644 --- a/test/libyul/yulOptimizerTests/structuralSimplifier/switch_remove_empty_case.yul +++ b/test/libyul/yulOptimizerTests/controlFlowSimplifier/switch_remove_empty_case.yul @@ -6,7 +6,7 @@ case 2 { y := 10 } } // ==== -// step: structuralSimplifier +// step: controlFlowSimplifier // ---- // { // let y := 200 diff --git a/test/libyul/yulOptimizerTests/structuralSimplifier/switch_remove_empty_cases.yul b/test/libyul/yulOptimizerTests/controlFlowSimplifier/switch_remove_empty_cases.yul similarity index 85% rename from test/libyul/yulOptimizerTests/structuralSimplifier/switch_remove_empty_cases.yul rename to test/libyul/yulOptimizerTests/controlFlowSimplifier/switch_remove_empty_cases.yul index 45a89abd3..57beacaa1 100644 --- a/test/libyul/yulOptimizerTests/structuralSimplifier/switch_remove_empty_cases.yul +++ b/test/libyul/yulOptimizerTests/controlFlowSimplifier/switch_remove_empty_cases.yul @@ -6,7 +6,7 @@ default { } } // ==== -// step: structuralSimplifier +// step: controlFlowSimplifier // ---- // { // let y := 200 diff --git a/test/libyul/yulOptimizerTests/structuralSimplifier/switch_remove_empty_default_case.yul b/test/libyul/yulOptimizerTests/controlFlowSimplifier/switch_remove_empty_default_case.yul similarity index 87% rename from test/libyul/yulOptimizerTests/structuralSimplifier/switch_remove_empty_default_case.yul rename to test/libyul/yulOptimizerTests/controlFlowSimplifier/switch_remove_empty_default_case.yul index 33a46b0bc..c5c4e44a7 100644 --- a/test/libyul/yulOptimizerTests/structuralSimplifier/switch_remove_empty_default_case.yul +++ b/test/libyul/yulOptimizerTests/controlFlowSimplifier/switch_remove_empty_default_case.yul @@ -6,7 +6,7 @@ default { } } // ==== -// step: structuralSimplifier +// step: controlFlowSimplifier // ---- // { // let y := 200 diff --git a/test/libyul/yulOptimizerTests/structuralSimplifier/switch_to_if.yul b/test/libyul/yulOptimizerTests/controlFlowSimplifier/switch_to_if.yul similarity index 80% rename from test/libyul/yulOptimizerTests/structuralSimplifier/switch_to_if.yul rename to test/libyul/yulOptimizerTests/controlFlowSimplifier/switch_to_if.yul index 0b3acee82..4a3558b65 100644 --- a/test/libyul/yulOptimizerTests/structuralSimplifier/switch_to_if.yul +++ b/test/libyul/yulOptimizerTests/controlFlowSimplifier/switch_to_if.yul @@ -2,7 +2,7 @@ switch calldataload(0) case 2 { mstore(0, 0) } } // ==== -// step: structuralSimplifier +// step: controlFlowSimplifier // ---- // { // if eq(2, calldataload(0)) { mstore(0, 0) } diff --git a/test/tools/yulopti.cpp b/test/tools/yulopti.cpp index 776759ebe..68d77fca5 100644 --- a/test/tools/yulopti.cpp +++ b/test/tools/yulopti.cpp @@ -32,6 +32,7 @@ #include #include #include +#include #include #include #include @@ -130,7 +131,7 @@ public: cout << " (e)xpr inline/(i)nline/(s)implify/varname c(l)eaner/(u)nusedprune/ss(a) transform/" << endl; cout << " (r)edundant assign elim./re(m)aterializer/f(o)r-loop-pre-rewriter/" << endl; cout << " s(t)ructural simplifier/equi(v)alent function combiner/ssa re(V)erser/? " << endl; - cout << " stack com(p)ressor/(D)ead code eliminator/? " << endl; + cout << " co(n)trol flow simplifier/stack com(p)ressor/(D)ead code eliminator/? " << endl; cout.flush(); int option = readStandardInputChar(); cout << ' ' << char(option) << endl; @@ -177,6 +178,9 @@ public: case 't': (StructuralSimplifier{*m_dialect})(*m_ast); break; + case 'n': + (ControlFlowSimplifier{})(*m_ast); + break; case 'u': UnusedPruner::runUntilStabilised(*m_dialect, *m_ast); break;