https://gcc.gnu.org/bugzilla/show_bug.cgi?id=89508
Bug ID: 89508
Summary: gcc snapshot 9.0.1 20190127 generates invalid
assembler options on aarch64-unknown-linux-gnu with
-march=native
Product: gcc
Version: 9.0
Status: UNCONFIRMED
Severity: normal
Priority: P3
Component: target
Assignee: unassigned at gcc dot gnu.org
Reporter: andrewm.roberts at sky dot com
Target Milestone: ---
The latest gcc 9 snapshot (gcc version 9.0.1 20190127 (experimental)) fails
to compile files (due to assembler option errors) when used with -march=native
on aarch64-unknown-linux-gnu
The gcc-8.3.0 release built with the same options accepts -march=native and
generates options the assembler can accept.
If -march=native is no longer accepted, it should generate a warning or error
as appropriate, or be silently ignored.
/usr/local/gcc/bin/gcc - is the gcc 9 snapshot
/usr/local/gcc-8.3.0/bin/gcc - is the gcc 8.3.0 release
All testing done an a Raspberry Pi 3B (BCM2837), ARM Cortex A53, running 64 bit
ArchLinux ARM:
uname -a
Linux alarm 4.20.11-1-ARCH #1 SMP Wed Feb 20 19:23:26 MST 2019 aarch64
GNU/Linux
The system binutils is used (2.31.1)
as --version
GNU assembler (GNU Binutils) 2.31.1
Copyright (C) 2018 Free Software Foundation, Inc.
This program is free software; you may redistribute it under the terms of
the GNU General Public License version 3 or later.
This program has absolutely no warranty.
This assembler was configured for a target of `aarch64-unknown-linux-gnu'.
Output of gcc-9.0.1 --help=target with -march=native:
(the guessed -march line is not accepted by the assembler)
/usr/local/gcc/bin/gcc -march=native -Q --help=target
The following options are target specific:
-mabi= lp64
-march=
armv8-a+crc+profile+rng+memtag+sb+ssbs+predres
-mbig-endian [disabled]
-mbionic [disabled]
-mbranch-protection=
-mcmodel= small
-mcpu= generic
-mfix-cortex-a53-835769 [enabled]
-mfix-cortex-a53-843419 [enabled]
-mgeneral-regs-only [disabled]
-mglibc [enabled]
-mlittle-endian [enabled]
-mlow-precision-div [disabled]
-mlow-precision-recip-sqrt [disabled]
-mlow-precision-sqrt [disabled]
-mmusl [disabled]
-momit-leaf-frame-pointer [enabled]
-moverride=<string>
-mpc-relative-literal-loads [enabled]
-msign-return-address= none
-mstack-protector-guard-offset=
-mstack-protector-guard-reg=
-mstack-protector-guard= global
-mstrict-align [disabled]
-msve-vector-bits=<number> scalable
-mtls-dialect= desc
-mtls-size= 24
-mtrack-speculation [disabled]
-mtune= generic
-muclibc [disabled]
-mverbose-cost-dump [disabled]
Known AArch64 ABIs (for use with the -mabi= option):
ilp32 lp64
Supported AArch64 return address signing scope (for use with
-msign-return-address= option):
all non-leaf none
The code model option names for -mcmodel:
large small tiny
Valid arguments to -mstack-protector-guard=:
global sysreg
The possible SVE vector lengths:
1024 128 2048 256 512 scalable
The possible TLS dialects:
desc trad
Assembler messages:
Error: unknown architectural extension `rng+memtag+sb+ssbs+predres'
Error: unrecognized option
-march=armv8-a+crc+profile+rng+memtag+sb+ssbs+predres
gcc-9.0.1 build options:
/usr/local/gcc/bin/gcc -v
Using built-in specs.
COLLECT_GCC=/usr/local/gcc/bin/gcc
COLLECT_LTO_WRAPPER=/usr/local/gcc-9.0.0/libexec/gcc/aarch64-unknown-linux-gnu/9.0.1/lto-wrapper
Target: aarch64-unknown-linux-gnu
Configured with: ../gcc-9.0.0/configure --prefix=/usr/local/gcc-9.0.0
--program-suffix= --disable-werror --enable-shared --enable-threads=posix
--enable-checking=release --with-system-zlib --enable-__cxa_atexit
--disable-libunwind-exceptions --enable-gnu-unique-object
--enable-linker-build-id --with-linker-hash-style=gnu --enable-plugin
--enable-gnu-indirect-function --enable-lto --with-isl
--enable-languages=c,c++,fortran,lto --disable-libgcj --enable-clocale=gnu
--disable-libstdcxx-pch --enable-install-libiberty --disable-multilib
--enable-shared --with-arch-directory=aarch64 --enable-multiarch
--disable-libssp --enable-default-pie --enable-default-ssp
--host=aarch64-unknown-linux-gnu --build=aarch64-unknown-linux-gnu
--with-arch=armv8-a --disable-bootstrap
Thread model: posix
gcc version 9.0.1 20190127 (experimental) (GCC)
Output of gcc-8.3.0 --help=target with -march=native:
/usr/local/gcc-8.3.0/bin/gcc -march=native -Q --help=target
The following options are target specific:
-mabi=ABI lp64
-march=ARCH armv8-a+crc
-mbig-endian [disabled]
-mbionic [disabled]
-mcmodel= small
-mcpu=CPU
-mfix-cortex-a53-835769 [enabled]
-mfix-cortex-a53-843419 [enabled]
-mgeneral-regs-only [disabled]
-mglibc [enabled]
-mlittle-endian [enabled]
-mmusl [disabled]
-momit-leaf-frame-pointer [enabled]
-moverride=STRING
-mpc-relative-literal-loads [enabled]
-msign-return-address= none
-mstrict-align [disabled]
-msve-vector-bits=N scalable
-mtls-dialect= desc
-mtls-size= 24
-mtune=CPU
-muclibc [disabled]
Known AArch64 ABIs (for use with the -mabi= option):
ilp32 lp64
Supported AArch64 return address signing scope (for use with
-msign-return-address= option):
all non-leaf none
The code model option names for -mcmodel:
large small tiny
The possible SVE vector lengths:
1024 128 2048 256 512 scalable
The possible TLS dialects:
desc trad
gcc-8.3.0 build options:
/usr/local/gcc-8.3.0/bin/gcc -v
Using built-in specs.
COLLECT_GCC=/usr/local/gcc-8.3.0/bin/gcc
COLLECT_LTO_WRAPPER=/usr/local/gcc-8.3.0/libexec/gcc/aarch64-unknown-linux-gnu/8.3.0/lto-wrapper
Target: aarch64-unknown-linux-gnu
Configured with: ../gcc-8.3.0/configure --prefix=/usr/local/gcc-8.3.0
--program-suffix= --disable-werror --enable-shared --enable-threads=posix
--enable-checking=release --with-system-zlib --enable-__cxa_atexit
--disable-libunwind-exceptions --enable-gnu-unique-object
--enable-linker-build-id --with-linker-hash-style=gnu --enable-plugin
--enable-gnu-indirect-function --enable-lto --with-isl
--enable-languages=c,c++,fortran,lto --disable-libgcj --enable-clocale=gnu
--disable-libstdcxx-pch --enable-install-libiberty --disable-multilib
--enable-shared --with-arch-directory=aarch64 --enable-multiarch
--disable-libssp --enable-default-pie --enable-default-ssp
--host=aarch64-unknown-linux-gnu --build=aarch64-unknown-linux-gnu
--with-arch=armv8-a --disable-bootstrap
Thread model: posix
gcc version 8.3.0 (GCC)
Sample trivial test program gcc-9.0.1 WITHOUT --march=native:
echo "int main(void) { return 0; }" | /usr/local/gcc/bin/gcc -c -x c -o tmp.o -
# success
Sample trivial test program gcc-9.0.1 WITH --march=native:
echo "int main(void) { return 0; }" | /usr/local/gcc/bin/gcc -march=native -c
-x c -o tmp.o -
Assembler messages:
Error: unknown architectural extension `rng+memtag+sb+ssbs+predres'
Error: unrecognized option
-march=armv8-a+crc+profile+rng+memtag+sb+ssbs+predres
Sample trivial test program gcc-8.3.0 WITH --march=native:
echo "int main(void) { return 0; }" | /usr/local/gcc-8.3.0/bin/gcc
-march=native -c -x c -o tmp.o -
# success