diff options
author | H. Peter Anvin <hpa@zytor.com> | 2010-07-15 18:28:52 -0700 |
---|---|---|
committer | H. Peter Anvin <hpa@zytor.com> | 2010-07-15 18:30:18 -0700 |
commit | 31387b2d04e2421a884adac449c192bd97abaa0f (patch) | |
tree | a58fced5312c40539c9b1ec1c9bfec90c16448a9 | |
parent | a537d4964ecb3a96840cd6734647e144df41e603 (diff) | |
download | nasm-preproc-paste-fix.tar.gz |
Make -Ox the defaultpreproc-paste-fix
Make -Ox the default; it's the optimization level expected by most
users, and it is clearly still causing confusion that it has to be
specified manually.
Signed-off-by: H. Peter Anvin <hpa@zytor.com>
-rw-r--r-- | doc/changes.src | 3 | ||||
-rw-r--r-- | doc/nasmdoc.src | 3 | ||||
-rw-r--r-- | nasm.c | 19 |
3 files changed, 19 insertions, 6 deletions
diff --git a/doc/changes.src b/doc/changes.src index e64aae74..9cd4b319 100644 --- a/doc/changes.src +++ b/doc/changes.src @@ -50,6 +50,9 @@ since 2007. \b Tighten EA checks. We warn a user if there overflow in EA addressing. +\b Make \c{-Ox} the default optimization level. For the legacy + behavior, specify \c{-O0} explicitly. See \k{opt-O}. + \S{cl-2.08} Version 2.08 diff --git a/doc/nasmdoc.src b/doc/nasmdoc.src index 722f0991..565b790b 100644 --- a/doc/nasmdoc.src +++ b/doc/nasmdoc.src @@ -866,7 +866,8 @@ levels of optimization. The syntax is: releases, the letter \c{x} may also be any number greater than one. This number has no effect on the actual number of passes. -The \c{-Ox} mode is recommended for most uses. +The \c{-Ox} mode is recommended for most uses, and is the default +since NASM 2.09. Note that this is a capital \c{O}, and is different from a small \c{o}, which is used to specify the output file name. See \k{opt-o}. @@ -1,6 +1,6 @@ /* ----------------------------------------------------------------------- * * - * Copyright 1996-2009 The NASM Authors - All Rights Reserved + * Copyright 1996-2010 The NASM Authors - All Rights Reserved * See the file AUTHORS included with the NASM distribution for * the specific copyright holders. * @@ -61,6 +61,13 @@ #include "output/outform.h" #include "listing.h" +/* + * This is the maximum number of optimization passes to do. If we ever + * find a case where the optimizer doesn't naturally converge, we might + * have to drop this value so the assembler doesn't appear to just hang. + */ +#define MAX_OPTIMIZE (INT_MAX >> 1) + struct forwrefinfo { /* info held on forward refs. */ int lineno; int operand; @@ -96,8 +103,8 @@ const struct dfmt *dfmt; static FILE *error_file; /* Where to write error messages */ FILE *ofile = NULL; -int optimizing = -1; /* number of optimization passes to take */ -static int sb, cmd_sb = 16; /* by default */ +int optimizing = MAX_OPTIMIZE; /* number of optimization passes to take */ +static int sb, cmd_sb = 16; /* by default */ static uint32_t cmd_cpu = IF_PLEVEL; /* highest level by default */ static uint32_t cpu = IF_PLEVEL; /* passed to insn_size & assemble.c */ int64_t global_offset_changed; /* referenced in labels.c */ @@ -659,7 +666,7 @@ static bool process_arg(char *p, char *q) if (!*param) { /* Naked -O == -Ox */ - optimizing = INT_MAX >> 1; /* Almost unlimited */ + optimizing = MAX_OPTIMIZE; } else { while (*param) { switch (*param) { @@ -683,7 +690,7 @@ static bool process_arg(char *p, char *q) case 'x': param++; - optimizing = INT_MAX >> 1; /* Almost unlimited */ + optimizing = MAX_OPTIMIZE; break; default: @@ -693,6 +700,8 @@ static bool process_arg(char *p, char *q) break; } } + if (optimizing > MAX_OPTIMIZE) + optimizing = MAX_OPTIMIZE; } break; } |