http://gcc.gnu.org/bugzilla/show_bug.cgi?id=49854

           Summary: Clean up SPE/e500 option handling
           Product: gcc
           Version: 4.6.0
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: target
        AssignedTo: unassig...@gcc.gnu.org
        ReportedBy: js...@gcc.gnu.org
            Target: powerpc*-*-*


As described at <http://gcc.gnu.org/ml/gcc-patches/2010-08/msg01667.html>, the
handling of SPE/e500 options should be cleaned up as follows:

* Enable rs6000_spe, rs6000_spe_abi, rs6000_float_gprs based on
information in the processor_target_table used to enable other features
based on the CPU, or failing that based on direct comparisons with
PROCESSOR_PPC8540 and PROCESSOR_PPC8548 as done for various other
processor peculiarities in rs6000_override_options.  Don't limit this to
vxworks.h; do it for all targets.

* If rs6000_spe is set while TARGET_SPE is 0, or similarly for the other
settings, give an error that the options given are not supported in this
compiler configuration (it's been built without e500 support).  (You
should do it in rs6000_option_override_internal after things have been
defaulted from the CPU.)

* Remove various special settings of defaults in eabispe.h and linuxspe.h
and e500-double.h, and the "For the powerpc-eabispe configuration, we set
all these by default" code in rs6000_override_options.  Instead,
config.gcc should enable --with-cpu=8540 / --with-cpu=8548 given one of
the *spe targets, selecting which of those options to enable based on
whether --enable-e500-double is passed - as well as ensuring e500.h is in
tm_file so the e500 support is built into the compiler, of course.  Then
the logic to default things from the CPU would do the rest.

* Remove the TARGET_E500 macro.  Everything using it should check either
features or specific PROCESSOR_* settings.

Reply via email to