- optimizing = opt; /* More than 5 passes */
- } else {
- if (*param == 'v' || *param == '+') {
- ++param;
- opt_verbose_info = TRUE;
- opt = 0;
- } else { /* garbage */
- opt = -99;
- break;
- }
- }
- } /* while (*param) */
- if (opt == -99)
- report_error(ERR_FATAL,
- "command line optimization level must be 'v', 0..3 or <nn>");
- } else if (p[1] == 'P' || p[1] == 'p') { /* pre-include */
- pp_pre_include(param);
- } else if (p[1] == 'D' || p[1] == 'd') { /* pre-define */
- pp_pre_define(param);
- } else if (p[1] == 'U' || p[1] == 'u') { /* un-define */
- pp_pre_undefine(param);
- } else if (p[1] == 'I' || p[1] == 'i') { /* include search path */
- pp_include_path(param);
- } else if (p[1] == 'l') { /* listing file */
- strcpy(listname, param);
- } else if (p[1] == 'Z') { /* error messages file */
- strcpy(errname, param);
- } else if (p[1] == 'F') { /* specify debug format */
- ofmt->current_dfmt = dfmt_find(ofmt, param);
- if (!ofmt->current_dfmt) {
- report_error(ERR_FATAL | ERR_NOFILE | ERR_USAGE,
- "unrecognized debug format `%s' for"
- " output format `%s'",
- param, ofmt->shortname);
- }
- } else if (p[1] == 'X') { /* specify error reporting format */
- if (nasm_stricmp("vc", param) == 0)
- report_error = report_error_vc;
- else if (nasm_stricmp("gnu", param) == 0)
- report_error = report_error_gnu;
- else
- report_error(ERR_FATAL | ERR_NOFILE | ERR_USAGE,
- "unrecognized error reporting format `%s'",
- param);
- }
+ optimizing = opt; /* More than 5 passes */
+ break;
+
+ case 'v':
+ case '+':
+ param++;
+ opt_verbose_info = true;
+ break;
+
+ case 'x':
+ param++;
+ optimizing = INT_MAX >> 1; /* Almost unlimited */
+ break;
+
+ default:
+ report_error(ERR_FATAL,
+ "unknown optimization option -O%c\n",
+ *param);
+ break;
+ }
+ }
+ }
+ break;
+ }
+
+ case 'p': /* pre-include */
+ case 'P':
+ pp_pre_include(param);
+ break;
+
+ case 'd': /* pre-define */
+ case 'D':
+ pp_pre_define(param);
+ break;
+
+ case 'u': /* un-define */
+ case 'U':
+ pp_pre_undefine(param);
+ break;
+
+ case 'i': /* include search path */
+ case 'I':
+ pp_include_path(param);
+ break;
+
+ case 'l': /* listing file */
+ copy_filename(listname, param);
+ break;
+
+ case 'Z': /* error messages file */
+ strcpy(errname, param);
+ break;
+
+ case 'F': /* specify debug format */
+ ofmt->current_dfmt = dfmt_find(ofmt, param);
+ if (!ofmt->current_dfmt) {
+ report_error(ERR_FATAL | ERR_NOFILE | ERR_USAGE,
+ "unrecognized debug format `%s' for"
+ " output format `%s'",
+ param, ofmt->shortname);
+ }
+ break;
+
+ case 'X': /* specify error reporting format */
+ if (nasm_stricmp("vc", param) == 0)
+ report_error = report_error_vc;
+ else if (nasm_stricmp("gnu", param) == 0)
+ report_error = report_error_gnu;
+ else
+ report_error(ERR_FATAL | ERR_NOFILE | ERR_USAGE,
+ "unrecognized error reporting format `%s'",
+ param);