mirror of
https://github.com/LadybirdBrowser/ladybird.git
synced 2025-04-22 04:25:13 +00:00
JSSpecCompiler: Compare CFG when running regression tests
This commit is contained in:
parent
ce6b987330
commit
8126e76e59
Notes:
sideshowbarker
2024-07-17 22:01:16 +09:00
Author: https://github.com/DanShaders Commit: https://github.com/SerenityOS/serenity/commit/8126e76e59 Pull-request: https://github.com/SerenityOS/serenity/pull/22222
2 changed files with 62 additions and 2 deletions
|
@ -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
|
||||
|
||||
|
|
|
@ -18,6 +18,7 @@ struct TestDescription {
|
|||
struct Flag {
|
||||
StringView name;
|
||||
bool dump_ast = false;
|
||||
bool dump_cfg = false;
|
||||
};
|
||||
|
||||
Vector<StringView> 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<DeprecatedString> build_command_line_arguments(LexicalPath const& test_so
|
|||
Vector<DeprecatedString> result;
|
||||
|
||||
StringBuilder dump_ast_option;
|
||||
StringBuilder dump_cfg_option;
|
||||
|
||||
for (auto const& flag : description.flags) {
|
||||
if (flag.dump_ast) {
|
||||
|
@ -59,9 +62,16 @@ Vector<DeprecatedString> 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);
|
||||
|
|
Loading…
Add table
Reference in a new issue