diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 26a0c96f366d2d8ff64aa7ebe62334439fca838c..8382f5091decd9a444844c826b6aa9a3d80c3927 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,9 @@ +2011-02-17 Joseph Myers <joseph@codesourcery.com> + + * common.opt (optimize_fast): New Variable. + * opts.c (default_options_optimization): Use opts->x_optimize_fast + instead of local variable ofast. + 2011-02-17 Nicola Pero <nicola.pero@meta-innovation.com> * doc/invoke.texi (fobjc-abi-version): Documented. diff --git a/gcc/common.opt b/gcc/common.opt index 1f24a3a67a0f243481d44fa72ee44197aa0a159c..f95805c7f1e0d4fc58c1a8f1fe06c507749ba95e 100644 --- a/gcc/common.opt +++ b/gcc/common.opt @@ -32,6 +32,11 @@ int optimize Variable int optimize_size +; Not used directly to control optimizations, only to save -Ofast +; setting for "optimize" attributes. +Variable +int optimize_fast + ; 0 means straightforward implementation of complex divide acceptable. ; 1 means wide ranges of inputs must work for complex divide. ; 2 means C99-like requirements for complex multiply and divide. diff --git a/gcc/opts.c b/gcc/opts.c index 8ca9c67bb8e8e46928bcc8a29161dd42308bd54b..9f93356539f5f37d07874f5326cc882e8b65f9ae 100644 --- a/gcc/opts.c +++ b/gcc/opts.c @@ -524,7 +524,6 @@ default_options_optimization (struct gcc_options *opts, { unsigned int i; int opt2; - int ofast = 0; /* Scan to see what optimization level has been specified. That will determine the default value of many flags. */ @@ -538,7 +537,7 @@ default_options_optimization (struct gcc_options *opts, { opts->x_optimize = 1; opts->x_optimize_size = 0; - ofast = 0; + opts->x_optimize_fast = 0; } else { @@ -553,7 +552,7 @@ default_options_optimization (struct gcc_options *opts, if ((unsigned int) opts->x_optimize > 255) opts->x_optimize = 255; opts->x_optimize_size = 0; - ofast = 0; + opts->x_optimize_fast = 0; } } break; @@ -563,14 +562,14 @@ default_options_optimization (struct gcc_options *opts, /* Optimizing for size forces optimize to be 2. */ opts->x_optimize = 2; - ofast = 0; + opts->x_optimize_fast = 0; break; case OPT_Ofast: /* -Ofast only adds flags to -O3. */ opts->x_optimize_size = 0; opts->x_optimize = 3; - ofast = 1; + opts->x_optimize_fast = 1; break; default: @@ -581,7 +580,7 @@ default_options_optimization (struct gcc_options *opts, maybe_default_options (opts, opts_set, default_options_table, opts->x_optimize, opts->x_optimize_size, - ofast, lang_mask, handlers, loc, dc); + opts->x_optimize_fast, lang_mask, handlers, loc, dc); /* -O2 param settings. */ opt2 = (opts->x_optimize >= 2); @@ -611,7 +610,7 @@ default_options_optimization (struct gcc_options *opts, maybe_default_options (opts, opts_set, targetm.target_option.optimization_table, opts->x_optimize, opts->x_optimize_size, - ofast, lang_mask, handlers, loc, dc); + opts->x_optimize_fast, lang_mask, handlers, loc, dc); } /* After all options at LOC have been read into OPTS and OPTS_SET,