From 28f76d5da93a1fe4d1329630f21dd05d9716be6f Mon Sep 17 00:00:00 2001 From: Arne Welzel Date: Mon, 9 Dec 2024 11:02:24 +0100 Subject: [PATCH] ScriptOpt: Fail compilation if known exprs/stmts is outdated --- src/script_opt/ScriptOpt.cc | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/src/script_opt/ScriptOpt.cc b/src/script_opt/ScriptOpt.cc index de53cd41ca..c91c3df8b3 100644 --- a/src/script_opt/ScriptOpt.cc +++ b/src/script_opt/ScriptOpt.cc @@ -664,6 +664,7 @@ bool has_AST_node_unknown_to_script_opt(const ProfileFunc* prof, bool /* is_ZAM // optimization // clang-format off static const std::set known_stmts = { + // STMT_ALARM STMT_PRINT, STMT_EVENT, STMT_EXPR, @@ -687,9 +688,15 @@ bool has_AST_node_unknown_to_script_opt(const ProfileFunc* prof, bool /* is_ZAM STMT_ASSERT, // STMT_EXTERN, // STMT_STD_FUNCTION, +#define SCRIPT_OPT_NUM_STMTS 24 }; // clang-format on + // Fail compilation if NUM_STMT in StmtEnums.h changes. + // Update known_stmts list above appropriately after adding + // support and increase SCRIPT_OPT_NUM_STMTS. + static_assert(NUM_STMTS == SCRIPT_OPT_NUM_STMTS); + for ( auto& s : prof->Stmts() ) if ( known_stmts.count(s->Tag()) == 0 ) return true; @@ -766,9 +773,15 @@ bool has_AST_node_unknown_to_script_opt(const ProfileFunc* prof, bool /* is_ZAM // EXPR_ANY_INDEX, // EXPR_SCRIPT_OPT_BUILTIN, // EXPR_NOP, +#define SCRIPT_OPT_NUM_EXPRS 70 }; // clang-format on + // Fail compilation if NUM_EXPRS in Expr.h changes. + // Update known_exprs list above appropriately after + // adding support and increase SCRIPT_OPT_NUM_STMTS. + static_assert(NUM_EXPRS == SCRIPT_OPT_NUM_EXPRS); + for ( auto& e : prof->Exprs() ) if ( known_exprs.count(e->Tag()) == 0 ) return true;