diff --git a/gcc/common/config/arm/arm-common.c b/gcc/common/config/arm/arm-common.c index 481aa9e43d9c73e464e1e992ad7d94c30d2db001..de898a74165db4d7250aa0097dfab682beb0f99c 100644 --- a/gcc/common/config/arm/arm-common.c +++ b/gcc/common/config/arm/arm-common.c @@ -115,7 +115,12 @@ const char * arm_rewrite_mcpu (int argc, const char **argv) { gcc_assert (argc); + +#ifdef HAVE_GAS_ARM_EXTENDED_ARCH + return argv[argc - 1]; +#else return arm_rewrite_selected_cpu (argv[argc - 1]); +#endif } /* Comparator for arm_rewrite_selected_arch. Compare the two arch extension @@ -223,7 +228,12 @@ const char * arm_rewrite_march (int argc, const char **argv) { gcc_assert (argc); + +#ifdef HAVE_GAS_ARM_EXTENDED_ARCH + return argv[argc - 1]; +#else return arm_rewrite_selected_arch (argv[argc - 1]); +#endif } #include "arm-cpu-cdata.h" diff --git a/gcc/config.in b/gcc/config.in index d8a810bbc91e78e1c4f885fa899785020d135553..61cafe4f6c0ff0603a6bb728e8c47dfbd9bdeb85 100644 --- a/gcc/config.in +++ b/gcc/config.in @@ -1331,6 +1331,13 @@ #endif +/* Define if your Arm assembler permits context-specific feature extensions. + */ +#ifndef USED_FOR_TARGET +#undef HAVE_GAS_ARM_EXTENDED_ARCH +#endif + + /* Define if your assembler supports .balign and .p2align. */ #ifndef USED_FOR_TARGET #undef HAVE_GAS_BALIGN_AND_P2ALIGN diff --git a/gcc/configure b/gcc/configure index 36dba4e09d6dc3f58dcd1a2a976c67f9231d70b7..b3de17009b803b000d8f22dd5efcc13f324ac385 100755 --- a/gcc/configure +++ b/gcc/configure @@ -28881,6 +28881,41 @@ $as_echo "#define HAVE_GCN_SRAM_ECC_GFX908 1" >>confdefs.h fi ;; + arm*) + { $as_echo "$as_me:${as_lineno-$LINENO}: checking assembler for assembler for arm accepts context-specific architecture extensions" >&5 +$as_echo_n "checking assembler for assembler for arm accepts context-specific architecture extensions... " >&6; } +if ${gcc_cv_as_arm_option_extensions+:} false; then : + $as_echo_n "(cached) " >&6 +else + gcc_cv_as_arm_option_extensions=no + if test x$gcc_cv_as != x; then + $as_echo '.text + .thumb + .syntax unified + vmov.f32 s0, s1' > conftest.s + if { ac_try='$gcc_cv_as $gcc_cv_as_flags -march=armv8.1-m.main+mve -o conftest.o conftest.s >&5' + { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5 + (eval $ac_try) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; } + then + gcc_cv_as_arm_option_extensions=yes + else + echo "configure: failed program was" >&5 + cat conftest.s >&5 + fi + rm -f conftest.o conftest.s + fi +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gcc_cv_as_arm_option_extensions" >&5 +$as_echo "$gcc_cv_as_arm_option_extensions" >&6; } +if test $gcc_cv_as_arm_option_extensions = yes; then + +$as_echo "#define HAVE_GAS_ARM_EXTENDED_ARCH 1" >>confdefs.h + +fi + esac # ??? Not all targets support dwarf2 debug_line, even within a version diff --git a/gcc/configure.ac b/gcc/configure.ac index fadd34dbbb6325bc8bd87831f812bed1ab92fa46..7d3aab470306359035a1ba02aa8e10f526f8b48b 100644 --- a/gcc/configure.ac +++ b/gcc/configure.ac @@ -5357,6 +5357,16 @@ case "$target" in [AC_DEFINE(HAVE_GCN_SRAM_ECC_GFX908, 1, [Define if your assembler allows -mattr=+sram-ecc for gfx908.])]) ;; + arm*) + gcc_GAS_CHECK_FEATURE([assembler for arm accepts context-specific architecture extensions], + gcc_cv_as_arm_option_extensions, + [-march=armv8.1-m.main+mve], + [.text + .thumb + .syntax unified + vmov.f32 s0, s1],, + [AC_DEFINE(HAVE_GAS_ARM_EXTENDED_ARCH, 1, + [Define if your Arm assembler permits context-specific feature extensions.])]) esac # ??? Not all targets support dwarf2 debug_line, even within a version