diff --git a/Meta/Lagom/Tools/CodeGenerators/JSSpecCompiler/Tests/simple.cpp.expectation b/Meta/Lagom/Tools/CodeGenerators/JSSpecCompiler/Tests/simple.cpp.expectation index 051bfc7eda..82bc654f88 100644 --- a/Meta/Lagom/Tools/CodeGenerators/JSSpecCompiler/Tests/simple.cpp.expectation +++ b/Meta/Lagom/Tools/CodeGenerators/JSSpecCompiler/Tests/simple.cpp.expectation @@ -132,3 +132,53 @@ TreeList ReturnNode Var b +===== CFG after cfg-building ===== +f(): +0: +ControlFlowBranch true=3 false=7 + UnresolvedReference cond1 + +1: +ControlFlowFunctionReturn + Var $return + +2: +BinaryOperation Assignment + Var $return + Var b +ControlFlowJump jump=1 + +3: +BinaryOperation Declaration + Var a + MathematicalConstant 1 +ControlFlowBranch true=5 false=6 + UnresolvedReference cond2 + +4: +ControlFlowJump jump=2 + +5: +BinaryOperation Declaration + Var b + Var a +ControlFlowJump jump=4 + +6: +BinaryOperation Declaration + Var b + MathematicalConstant 3 +ControlFlowJump jump=4 + +7: +BinaryOperation Declaration + Var b + MathematicalConstant 4 +ControlFlowJump jump=2 + +8: +BinaryOperation Assignment + Var $return + Error "" +ControlFlowJump jump=1 + diff --git a/Tests/JSSpecCompiler/test-runner.cpp b/Tests/JSSpecCompiler/test-runner.cpp index 1c193e3e32..8fd834d3ff 100644 --- a/Tests/JSSpecCompiler/test-runner.cpp +++ b/Tests/JSSpecCompiler/test-runner.cpp @@ -18,6 +18,7 @@ struct TestDescription { struct Flag { StringView name; bool dump_ast = false; + bool dump_cfg = false; }; Vector sources; @@ -29,15 +30,16 @@ constexpr StringView stderr_capture_filename = "stderr"sv; constexpr StringView compiler_binary_name = "JSSpecCompiler"sv; constexpr StringView relative_path_to_test = "Tests"sv; -constexpr TestDescription::Flag always_dump_ast = { +constexpr TestDescription::Flag always_dump_all = { .name = "all"sv, .dump_ast = true, + .dump_cfg = true }; const Array regression_tests = { TestDescription { .sources = { "simple.cpp"sv }, - .flags = { always_dump_ast }, + .flags = { always_dump_all }, }, }; @@ -52,6 +54,7 @@ Vector build_command_line_arguments(LexicalPath const& test_so Vector result; StringBuilder dump_ast_option; + StringBuilder dump_cfg_option; for (auto const& flag : description.flags) { if (flag.dump_ast) { @@ -59,9 +62,16 @@ Vector build_command_line_arguments(LexicalPath const& test_so dump_ast_option.append(","sv); dump_ast_option.append(flag.name); } + if (flag.dump_cfg) { + if (!dump_cfg_option.is_empty()) + dump_cfg_option.append(","sv); + dump_cfg_option.append(flag.name); + } } if (!dump_ast_option.is_empty()) result.append(DeprecatedString::formatted("--dump-ast={}", dump_ast_option.string_view())); + if (!dump_cfg_option.is_empty()) + result.append(DeprecatedString::formatted("--dump-cfg={}", dump_cfg_option.string_view())); if (test_source.has_extension(".cpp"sv)) result.append("-xc++"sv);