[arm] PR target/83206: Make native driver select fp-capable armv6 cores
authorRichard Earnshaw <rearnsha@arm.com>
Fri, 8 Dec 2017 11:19:20 +0000 (11:19 +0000)
committerRichard Earnshaw <rearnsha@gcc.gnu.org>
Fri, 8 Dec 2017 11:19:20 +0000 (11:19 +0000)
A quirk in the historical naming of some ARMv6 products means that the
main CPU name implies the presence or otherwise of the floating point unit.
This causes problems when using -mfpu=auto with -mcpu=native: the driver is
picking a CPU that does not support a floating-point unit, even though
one may well exist.

This patch addresses this by selecting the FP-capable names so that FP
instructions will be generated if the other options suggest this is
permitted.

Note that a more complete fix is really needed here to look up the
FP/simd capabilities and append the appropriate capability extensions.
This will be the subject of some follow-up patches.

* config/arm/driver-arm.c (arm_cpu_table): Use fp-capable product names
for armv6 ARM CPU IDs.

From-SVN: r255504

gcc/ChangeLog
gcc/config/arm/driver-arm.c

index 6e5eefdbc602615383b8c24fc9ba4993b7ca5f39..d911f6f90603b8c6bae836653181f8ef7cba7e65 100644 (file)
@@ -1,3 +1,8 @@
+2017-06-08  Richard Earnshaw  <rearnsha@arm.com>
+
+       * config/arm/driver-arm.c (arm_cpu_table): Use fp-capable product names
+       for armv6 ARM CPU IDs.
+
 2017-06-08  Richard Earnshaw  <rearnsha@arm.com>
 
        * common/config/arm/arm-common.c: Include <algorithm>.
index 5c29b94caaba4ff6f89a191f1d8edcf10431c0b3..86212315f13e36e35d850cae624e17db464db8d9 100644 (file)
@@ -33,12 +33,12 @@ static struct vendor_cpu arm_cpu_table[] = {
     {"0x926", "armv5te", "arm926ej-s"},
     {"0xa26", "armv5te", "arm1026ej-s"},
     {"0xb02", "armv6k", "mpcore"},
-    {"0xb36", "armv6j", "arm1136j-s"},
-    {"0xb56", "armv6t2", "arm1156t2-s"},
+    {"0xb36", "armv6j", "arm1136jf-s"},
+    {"0xb56", "armv6t2", "arm1156t2f-s"},
     /* armv6kz is the correct spelling for ARMv6KZ but may not be supported in
        the version of binutils used.  The incorrect spelling is supported in
        legacy and current binutils so that is used instead.  */
-    {"0xb76", "armv6zk", "arm1176jz-s"},
+    {"0xb76", "armv6zk", "arm1176jzf-s"},
     {"0xc05", "armv7-a", "cortex-a5"},
     {"0xc07", "armv7ve", "cortex-a7"},
     {"0xc08", "armv7-a", "cortex-a8"},