Hello David, Back on this one after Alan's correction and extra testing of the patch on my side.
On May 7, 2012, at 18:59 , David Edelsohn wrote: >>> http://gcc.gnu.org/ml/gcc-patches/2010-08/msg01667.html > > Yes, exactly. If we can work through the fallout, this is exactly the > type of cleanup I envisioned. Attached is a slightly modified version, with a bug fix regarding the ISEL deactivation. The original patch kept the logic of the test but mistakenly just extracted out of an outer "else" conditional branch, so doing it for e500 targets as well. In this version, the test is moved in the "default:" part of the case statement introduced to isolate e500 specific operations, replacing the previous if/else construct. This version builds and regtests fine for default languages on powerpc-eabisim on an x86_64-linux host. It also bootstraps and regtests fine for languages=all,ada on powerpc-generic-linux-gnu. OK to commit ? With Kind Regards, Olivier 2012-05-15 Olivier Hainque <hain...@adacore.com> config/rs6000: * rs6000-opts.h (enum processor_type): Add PROCESSOR_PPC8548. * rs6000-cpus.def: Reference it for cpu="8548". * rs6000.md (cpu attribute definition): Add ppc8548. * 8540.md: indicate that the units/patterns apply to ppc8548 as well. * rs6000.c (rs6000_option_override_internal): Rename default_cpu into implicit_cpu, conveying what --with-cpu was passed at configure time. Treat implicit_cpu as have_cpu. Pick defaults for SPE related flags, check that what is queried is supported by the selected configuration. Rework the single/double_float and MASK_STRING resets to hit for all the E500 cores (854x + E500MC variants). Select the ppc8540 costs for PROCESSOR_PPC8548 as well. (rs6000_issue_rate): case CPU_PPC8548 together with CPU_PPC8540. (rs6000_use_sched_lookahead): Likewise, rewriting function as a case statement instead of a sequence of ifs. * rs6000.h (TARGET_E500): Remove. (TARGET_NO_LWSYNC): Adjust accordingly. * e500.h (TARGET_E500): Remove. (CHECK_E500_OPTIONS): Adjust accordingly. * eabispe.h (SUBSUBTARGET_OVERRIDE_OPTIONS): Remove. (TARGET_DEFAULT): Reformat definition to match the one in linuxspe.h. * linuxspe.h: Likewise. * vxworks.h: Remove bogus TARGET_E500 overrides and superfluous comments. * e500-double.h: Remove. gcc: * config.gcc (pick a default with_cpu): For powerpc*-*-*spe*, default to with_cpu=8548 if --enable-e500-double, and to 8540 otherwise. (set misc flags section): For powerpc*|rs6000*, remove inclusion of e500-double.h for --enable-e500-double.
e500-2.diff
Description: Binary data