summaryrefslogtreecommitdiff
path: root/nasm.c
diff options
context:
space:
mode:
authorH. Peter Anvin <hpa@zytor.com>2010-07-15 18:28:52 -0700
committerH. Peter Anvin <hpa@zytor.com>2010-07-15 18:30:18 -0700
commit31387b2d04e2421a884adac449c192bd97abaa0f (patch)
treea58fced5312c40539c9b1ec1c9bfec90c16448a9 /nasm.c
parenta537d4964ecb3a96840cd6734647e144df41e603 (diff)
downloadnasm-31387b2d04e2421a884adac449c192bd97abaa0f.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>
Diffstat (limited to 'nasm.c')
-rw-r--r--nasm.c19
1 files changed, 14 insertions, 5 deletions
diff --git a/nasm.c b/nasm.c
index 9a8c1e5d..7a63afb8 100644
--- a/nasm.c
+++ b/nasm.c
@@ -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;
}