diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 6f82e1e39ed5..00d9025513b9 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,9 @@ +2009-11-04 Richard Guenther + + * c-opts.c (c_common_post_options): Move LTO option processing + code ... + * opts.c (decode_options): ... here. + 2009-11-04 Jakub Jelinek * c-common.c (fold_offsetof_1): Use %wd instead of diff --git a/gcc/c-opts.c b/gcc/c-opts.c index 6c2f5a59cd3b..e026fd97dc75 100644 --- a/gcc/c-opts.c +++ b/gcc/c-opts.c @@ -1033,29 +1033,6 @@ c_common_post_options (const char **pfilename) C_COMMON_OVERRIDE_OPTIONS; #endif - if (flag_lto || flag_whopr) - { -#ifdef ENABLE_LTO - flag_generate_lto = 1; - - /* When generating IL, do not operate in whole-program mode. - Otherwise, symbols will be privatized too early, causing link - errors later. */ - flag_whole_program = 0; - - /* FIXME lto. Disable var-tracking until debug information - is properly handled in free_lang_data. */ - flag_var_tracking = 0; -#else - error ("LTO support has not been enabled in this configuration"); -#endif - } - - /* Reconcile -flto and -fwhopr. Set additional flags as appropriate and - check option consistency. */ - if (flag_lto && flag_whopr) - error ("-flto and -fwhopr are mutually exclusive"); - /* Excess precision other than "fast" requires front-end support. */ if (c_dialect_cxx ()) diff --git a/gcc/fortran/ChangeLog b/gcc/fortran/ChangeLog index 8fc1175b35ae..47cfead00e0e 100644 --- a/gcc/fortran/ChangeLog +++ b/gcc/fortran/ChangeLog @@ -1,3 +1,8 @@ +2009-11-04 Richard Guenther + + * options.c (gfc_post_options): Rely on common code processing + LTO options. Only enable -fwhole-file here. + 2009-11-03 Tobias Burnus PR fortran/41907 diff --git a/gcc/fortran/options.c b/gcc/fortran/options.c index d2c6d9ba8495..3742addb6b11 100644 --- a/gcc/fortran/options.c +++ b/gcc/fortran/options.c @@ -242,27 +242,9 @@ gfc_post_options (const char **pfilename) if (flag_whole_program) gfc_option.flag_whole_file = 1; + /* Enable whole-file mode if LTO is in effect. */ if (flag_lto || flag_whopr) - { -#ifdef ENABLE_LTO - flag_generate_lto = 1; - - /* When generating IL, do not operate in whole-program mode. - Otherwise, symbols will be privatized too early, causing link - errors later. */ - flag_whole_program = 0; - - /* But do enable whole-file mode. */ - gfc_option.flag_whole_file = 1; -#else - error ("LTO support has not been enabled in this configuration"); -#endif - } - - /* Reconcile -flto and -fwhopr. Set additional flags as appropriate and - check option consistency. */ - if (flag_lto && flag_whopr) - error ("-flto and -fwhopr are mutually exclusive"); + gfc_option.flag_whole_file = 1; /* -fbounds-check is equivalent to -fcheck=bounds */ if (flag_bounds_check) diff --git a/gcc/opts.c b/gcc/opts.c index 72411b662cca..b2b6c4454ee6 100644 --- a/gcc/opts.c +++ b/gcc/opts.c @@ -1117,6 +1117,28 @@ decode_options (unsigned int argc, const char **argv) PARAM_VALUE (PARAM_STACK_FRAME_GROWTH) = 40; } + if (flag_lto || flag_whopr) + { +#ifdef ENABLE_LTO + flag_generate_lto = 1; + + /* When generating IL, do not operate in whole-program mode. + Otherwise, symbols will be privatized too early, causing link + errors later. */ + flag_whole_program = 0; + + /* FIXME lto. Disable var-tracking until debug information + is properly handled in free_lang_data. */ + flag_var_tracking = 0; +#else + error ("LTO support has not been enabled in this configuration"); +#endif + } + + /* Reconcile -flto and -fwhopr. Set additional flags as appropriate and + check option consistency. */ + if (flag_lto && flag_whopr) + error ("-flto and -fwhopr are mutually exclusive"); } #define LEFT_COLUMN 27