Fix command line parsing for -O and -O1

This commit is contained in:
drmortalwombat 2024-09-28 11:15:49 +02:00
parent a4f1341587
commit 3dfba389ff

View File

@ -237,29 +237,29 @@ int main2(int argc, const char** argv)
{ {
compiler->mCompilerOptions |= COPT_PETSCII; compiler->mCompilerOptions |= COPT_PETSCII;
} }
else if (arg[1] == 'O' && arg[2] != 0 && arg[3] == 0) else if (arg[1] == 'O')
{ {
if (arg[2] == '0') if (arg[2] == '0' && !arg[3])
compiler->mCompilerOptions &= ~(COPT_OPTIMIZE_ALL); compiler->mCompilerOptions &= ~(COPT_OPTIMIZE_ALL);
else if (arg[1] == '1' || arg[1] == 0) else if (arg[2] == '1' && !arg[3] || arg[2] == 0)
compiler->mCompilerOptions |= COPT_OPTIMIZE_DEFAULT; compiler->mCompilerOptions |= COPT_OPTIMIZE_DEFAULT;
else if (arg[2] == '2') else if (arg[2] == '2' && !arg[3])
compiler->mCompilerOptions |= COPT_OPTIMIZE_SPEED; compiler->mCompilerOptions |= COPT_OPTIMIZE_SPEED;
else if (arg[2] == '3') else if (arg[2] == '3' && !arg[3])
compiler->mCompilerOptions |= COPT_OPTIMIZE_ALL; compiler->mCompilerOptions |= COPT_OPTIMIZE_ALL;
else if (arg[2] == 's') else if (arg[2] == 's' && !arg[3])
compiler->mCompilerOptions |= COPT_OPTIMIZE_SIZE; compiler->mCompilerOptions |= COPT_OPTIMIZE_SIZE;
else if (arg[2] == 'a') else if (arg[2] == 'a' && !arg[3])
compiler->mCompilerOptions |= COPT_OPTIMIZE_ASSEMBLER; compiler->mCompilerOptions |= COPT_OPTIMIZE_ASSEMBLER;
else if (arg[2] == 'i') else if (arg[2] == 'i' && !arg[3])
compiler->mCompilerOptions |= COPT_OPTIMIZE_AUTO_INLINE; compiler->mCompilerOptions |= COPT_OPTIMIZE_AUTO_INLINE;
else if (arg[2] == 'z') else if (arg[2] == 'z' && !arg[3])
compiler->mCompilerOptions |= COPT_OPTIMIZE_AUTO_ZEROPAGE; compiler->mCompilerOptions |= COPT_OPTIMIZE_AUTO_ZEROPAGE;
else if (arg[2] == 'p') else if (arg[2] == 'p' && !arg[3])
compiler->mCompilerOptions |= COPT_OPTIMIZE_CONST_PARAMS; compiler->mCompilerOptions |= COPT_OPTIMIZE_CONST_PARAMS;
else if (arg[2] == 'g') else if (arg[2] == 'g' && !arg[3])
compiler->mCompilerOptions |= COPT_OPTIMIZE_GLOBAL; compiler->mCompilerOptions |= COPT_OPTIMIZE_GLOBAL;
else if (arg[2] == 'm') else if (arg[2] == 'm' && !arg[3])
compiler->mCompilerOptions |= COPT_OPTIMIZE_MERGE_CALLS; compiler->mCompilerOptions |= COPT_OPTIMIZE_MERGE_CALLS;
else else
compiler->mErrors->Error(loc, EERR_COMMAND_LINE, "Invalid command line argument", arg); compiler->mErrors->Error(loc, EERR_COMMAND_LINE, "Invalid command line argument", arg);