summaryrefslogtreecommitdiff
path: root/packages/gcc/8.1.0/0018-xscale.patch
blob: 62654c2db97aebeae6c41f574857b9cbf2e97c86 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
commit f18d79595db4ae88dbd40d73bb2d1ea191a756a1
Author: rearnsha <rearnsha@138bc75d-0d04-0410-961f-82ee72b054a4>
Date:   Mon Jun 4 08:41:45 2018 +0000

    [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.
    
    
    git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@261140 138bc75d-0d04-0410-961f-82ee72b054a4

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: