https://gcc.gnu.org/bugzilla/show_bug.cgi?id=68028
Richard Biener <rguenth at gcc dot gnu.org> changed: What |Removed |Added ---------------------------------------------------------------------------- Keywords| |lto CC| |hubicka at gcc dot gnu.org Component|lto |target --- Comment #1 from Richard Biener <rguenth at gcc dot gnu.org> --- static bool rs6000_option_override_internal (bool global_init_p) { ... if (main_target_opt) { if (main_target_opt->x_rs6000_single_float != rs6000_single_float) error ("target attribute or pragma changes single precision floating " "point"); if (main_target_opt->x_rs6000_double_float != rs6000_double_float) error ("target attribute or pragma changes double precision floating " "point"); } it looks like -mcpu=... is not allowed to differ from global defaults. Note that LTO now passes all "Save" options in function attributes and no longer passes along -mcpu= to the link-time transparently. mcpu= Target RejectNegative Joined Var(rs6000_cpu_index) Init(-1) Enum(rs6000_cpu_opt_value) Save -mcpu= Use features of and schedule code for given CPU so -mcpu= is 'Save' but appearantly switches additional flags?