@@ -180,7 +180,8 @@ main(int argc, const char **argv)
180
180
const char * outname = NULL ;
181
181
const char * listFile = NULL ;
182
182
int wantcse = -1 ;
183
-
183
+ bool optimize_set = false;
184
+
184
185
gl_max_errors = 1 ;
185
186
gl_src_charset = CHARSET_UTF8 ;
186
187
gl_run_charset = CHARSET_UTF8 ;
@@ -280,7 +281,9 @@ main(int argc, const char **argv)
280
281
outputAsm = 1 ;
281
282
gl_output = OUTPUT_ASM ;
282
283
argv ++ ; -- argc ;
283
- gl_optimize_flags = (DEFAULT_ASM_OPTS & ~OPT_REMOVE_UNUSED_FUNCS );
284
+ if (!optimize_set ) {
285
+ gl_optimize_flags = (DEFAULT_ASM_OPTS & ~OPT_REMOVE_UNUSED_FUNCS );
286
+ }
284
287
} else if (!strcmp (argv [0 ], "--list" )) {
285
288
gl_listing = 1 ;
286
289
argv ++ ; -- argc ;
@@ -314,13 +317,20 @@ main(int argc, const char **argv)
314
317
gl_intstring = "intptr_t" ; // for 64 bit targets
315
318
argv ++ ; -- argc ;
316
319
} else if (!strncmp (argv [0 ], "--optimize" , 5 )) {
317
- /* for debug purpose only: override optimize flags with hex */
318
- argv ++ ; -- argc ;
319
- if (argv [0 ] == NULL ) {
320
- fprintf (stderr , "Error: expected another argument after --optimize\n" );
321
- exit (2 );
320
+ /* for debug purpose only: override optimize flags */
321
+ const char * optstring ;
322
+ if (!strncmp (argv [0 ], "--optimize=" , 11 )) {
323
+ optstring = argv [0 ]+ 11 ;
324
+ } else {
325
+ argv ++ ; -- argc ;
326
+ if (argv [0 ] == NULL ) {
327
+ fprintf (stderr , "Error: expected another argument after --optimize\n" );
328
+ exit (2 );
329
+ }
330
+ optstring = argv [0 ];
322
331
}
323
- ParseOptimizeString (NULL , argv [0 ], & gl_optimize_flags );
332
+ ParseOptimizeString (NULL , optstring , & gl_optimize_flags );
333
+ optimize_set = true;
324
334
argv ++ ; -- argc ;
325
335
} else if (!strncmp (argv [0 ], "--files" , 7 )) {
326
336
outputFiles = 1 ;
0 commit comments