Version bump, add -O0+ and -O1+, let stdlib override nostdlib

This commit is contained in:
Christoffer Lerno
2022-10-10 22:54:22 +02:00
parent ec3d77f4bd
commit 314369d069
4 changed files with 21 additions and 2 deletions

View File

@@ -97,6 +97,8 @@ static void usage(void)
OUTPUT(" -O3 - Aggressive optimization.");
OUTPUT(" -Os - Optimize for size.");
OUTPUT(" -Oz - Optimize for tiny size.");
OUTPUT(" -O0+ - No optimization, single module");
OUTPUT(" -O1+ - Simple optimizations, single module.");
OUTPUT(" -O2+ - Default optimization level, single module");
OUTPUT(" -O3+ - Aggressive optimization, single module.");
OUTPUT(" -Os+ - Optimize for size, single module.");
@@ -395,10 +397,18 @@ static void parse_option(BuildOptions *options)
{
FAIL_WITH_ERR("Multiple optimization levels were set.");
}
if (match_shortopt("O0"))
if (match_shortopt("O0+"))
{
options->optimization_setting_override = OPT_SETTING_O0_PLUS;
}
else if (match_shortopt("O0"))
{
options->optimization_setting_override = OPT_SETTING_O0;
}
else if (match_shortopt("O1+"))
{
options->optimization_setting_override = OPT_SETTING_O1_PLUS;
}
else if (match_shortopt("O1"))
{
options->optimization_setting_override = OPT_SETTING_O1;
@@ -615,6 +625,7 @@ static void parse_option(BuildOptions *options)
{
if (at_end() || next_is_opt()) error_exit("error: --stdlib needs a directory.");
options->std_lib_dir = check_dir(next_arg());
options->no_stdlib = false;
return;
}
if (match_longopt("nostdlib"))

View File

@@ -89,7 +89,9 @@ typedef enum
{
OPT_SETTING_NOT_SET = -1,
OPT_SETTING_O0 = 0,
OPT_SETTING_O0_PLUS,
OPT_SETTING_O1,
OPT_SETTING_O1_PLUS,
OPT_SETTING_O2,
OPT_SETTING_O2_PLUS,
OPT_SETTING_O3,

View File

@@ -129,11 +129,17 @@ static void update_build_target_from_options(BuildTarget *target, BuildOptions *
// Copy optimization levels.
switch (options->optimization_setting_override)
{
case OPT_SETTING_O0_PLUS:
target->single_module = true;
FALLTHROUGH;
case OPT_SETTING_O0:
target->optimization_level = OPTIMIZATION_NONE;
target->size_optimization_level = SIZE_OPTIMIZATION_NONE;
target->feature.safe_mode = true;
break;
case OPT_SETTING_O1_PLUS:
target->single_module = true;
FALLTHROUGH;
case OPT_SETTING_O1:
target->optimization_level = OPTIMIZATION_LESS;
target->size_optimization_level = SIZE_OPTIMIZATION_NONE;

View File

@@ -1 +1 @@
#define COMPILER_VERSION "0.3.79"
#define COMPILER_VERSION "0.3.80"