From 34a1d5c2c7ffd8f790da87f8e23180cf7d17b81b Mon Sep 17 00:00:00 2001 From: Richard Earnshaw Date: Mon, 4 Jun 2018 08:41:45 +0000 Subject: [PATCH] [arm] PR target/86003 build failures with --with-cpu=xscale The XScale cpu configuration in GCC has always been somewhat non-conforming. Although XScale isn't an architecture (it's simply an implementation of ARMv5te), we do by tradition emit a specific pre-define for it. We achieve this effect by adding an additional feature bit to the xscale CPU definition that isn't part of the base architecture. When I restructured the options last year I overlooked this oddity and the result, of course, is that this configuration now fails to build as intended. What happens is that the driver (correctly) constructs an architecture for the xscale cpu name (as armv5te) and passes it in addition to the CPU name. The backend code, on finding both a cpu and an architecture specifies attempts to correlate the two and finds a difference due to the additional feature bit and reports an inconsistency (fatally if -werror is specified). I think the best fix to this is to treat the xscale feature bit using the same mechanism that we use for other 'quirks' in CPU implementations and simply filter it out before comparing the capabilities. It has the additional benefit that it's also the simplest fix. PR target/86003 * config/arm/arm-cpus.in (ALL_QUIRKS): Add xscale feature to the list of bits to ignore when comparing architectures. From-SVN: r261140 --- gcc/ChangeLog | 6 ++++++ gcc/config/arm/arm-cpus.in | 4 +++- 2 files changed, 9 insertions(+), 1 deletion(-) diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 95c8d7de9b3..e780766e7d8 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,9 @@ +2018-06-04 Richard Earnshaw + + PR target/86003 + * config/arm/arm-cpus.in (ALL_QUIRKS): Add xscale feature to the list + of bits to ignore when comparing architectures. + 2018-06-04 Jakub Jelinek PR tree-optimization/69615 diff --git a/gcc/config/arm/arm-cpus.in b/gcc/config/arm/arm-cpus.in index aec73b5cae0..661bf1a573c 100644 --- a/gcc/config/arm/arm-cpus.in +++ b/gcc/config/arm/arm-cpus.in @@ -254,7 +254,9 @@ define fgroup DOTPROD NEON dotprod # List of all quirk bits to strip out when comparing CPU features with # architectures. -define fgroup ALL_QUIRKS quirk_no_volatile_ce quirk_armv6kz quirk_cm3_ldrd +# xscale isn't really a 'quirk', but it isn't an architecture either and we +# need to ignore it for matching purposes. +define fgroup ALL_QUIRKS quirk_no_volatile_ce quirk_armv6kz quirk_cm3_ldrd xscale # Architecture entries # format: -- 2.30.2