mirror of
https://github.com/odin-lang/Odin.git
synced 2026-06-13 22:03:42 +00:00
-disallow-non-constant-globals
This commit is contained in:
@@ -607,6 +607,7 @@ struct BuildContext {
|
||||
isize max_error_count;
|
||||
|
||||
bool bedrock;
|
||||
bool disable_non_constant_globals;
|
||||
|
||||
|
||||
u32 cmd_doc_flags;
|
||||
|
||||
@@ -2071,6 +2071,10 @@ gb_internal bool lb_init_global_var(lbModule *m, lbProcedure *p, Entity *e, Ast
|
||||
}
|
||||
|
||||
var.is_initialized = true;
|
||||
|
||||
if (build_context.disable_non_constant_globals) {
|
||||
error(e->token, "Non-constant initialization of a global variable is disallowed with '-disable_non_constant_globals'");
|
||||
}
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
@@ -395,6 +395,7 @@ enum BuildFlagKind {
|
||||
BuildFlag_BuildDiagnostics,
|
||||
|
||||
BuildFlag_Bedrock,
|
||||
BuildFlag_DisableNonConstantGlobals,
|
||||
|
||||
// internal use only
|
||||
BuildFlag_InternalFastISel,
|
||||
@@ -630,6 +631,7 @@ gb_internal bool parse_build_flags(Array<String> args) {
|
||||
add_flag(&build_flags, BuildFlag_BuildDiagnostics, str_lit("build-diagnostics"), BuildFlagParam_None, Command__does_build);
|
||||
|
||||
add_flag(&build_flags, BuildFlag_Bedrock, str_lit("bedrock"), BuildFlagParam_None, Command__does_check);
|
||||
add_flag(&build_flags, BuildFlag_DisableNonConstantGlobals, str_lit("disable-non-constant-globals"), BuildFlagParam_None, Command__does_check);
|
||||
|
||||
add_flag(&build_flags, BuildFlag_InternalFastISel, str_lit("internal-fast-isel"), BuildFlagParam_None, Command_all);
|
||||
add_flag(&build_flags, BuildFlag_InternalIgnoreLazy, str_lit("internal-ignore-lazy"), BuildFlagParam_None, Command_all);
|
||||
@@ -1606,6 +1608,11 @@ gb_internal bool parse_build_flags(Array<String> args) {
|
||||
case BuildFlag_Bedrock:
|
||||
build_context.bedrock = true;
|
||||
build_context.no_rtti = true;
|
||||
build_context.disable_non_constant_globals = true;
|
||||
break;
|
||||
|
||||
case BuildFlag_DisableNonConstantGlobals:
|
||||
build_context.disable_non_constant_globals = true;
|
||||
break;
|
||||
|
||||
case BuildFlag_InternalFastISel:
|
||||
|
||||
Reference in New Issue
Block a user