[Bug target/68028] Compilation error "lto1: error: target attribute or pragma changes single precision floating point", with "-flto" on different variant of powerpc like -mcpu=e6500, 8540, 8548, e500mc, e500mc64, e5500. With gcc-5.2.0 while with 4.9.3 it is working fine.

rguenth at gcc dot gnu.org gcc-bugzilla@gcc.gnu.org
Tue Oct 20 11:51:00 GMT 2015


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?



More information about the Gcc-bugs mailing list