[arm] PR target/86003 build failures with --with-cpu=xscale
authorRichard Earnshaw <rearnsha@arm.com>
Mon, 4 Jun 2018 08:41:45 +0000 (08:41 +0000)
committerRichard Earnshaw <rearnsha@gcc.gnu.org>
Mon, 4 Jun 2018 08:41:45 +0000 (08:41 +0000)
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
gcc/config/arm/arm-cpus.in

index 95c8d7de9b3379b2f83979647d705dcbadcfb51c..e780766e7d8987386329dc5f6eec088c43c0c90f 100644 (file)
@@ -1,3 +1,9 @@
+2018-06-04  Richard Earnshaw  <rearnsha@arm.com>
+
+       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  <jakub@redhat.com>
 
        PR tree-optimization/69615
index aec73b5cae0b9d62c521c230aff510ce3d816e3b..661bf1a573c4a00702ba71a0f598776a647cf623 100644 (file)
@@ -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: