[AArch64] Don't allow -mgeneral-regs-only to change the .arch assembler directives
authorKyrylo Tkachov <kyrylo.tkachov@arm.com>
Fri, 4 Dec 2015 15:02:42 +0000 (15:02 +0000)
committerKyrylo Tkachov <ktkachov@gcc.gnu.org>
Fri, 4 Dec 2015 15:02:42 +0000 (15:02 +0000)
* config/aarch64/aarch64.c (aarch64_override_options_internal):
Do not alter target_flags due to TARGET_GENERAL_REGS_ONLY_P.
* doc/invoke.texi (AArch64 options): Mention that -mgeneral-regs-only
does not affect the assembler directives.

* gcc.target/aarch64/mgeneral-regs_4.c: New test.

From-SVN: r231275

gcc/ChangeLog
gcc/config/aarch64/aarch64.c
gcc/doc/invoke.texi
gcc/testsuite/ChangeLog
gcc/testsuite/gcc.target/aarch64/mgeneral-regs_4.c [new file with mode: 0644]

index 59c50e081157edee2d3d7839a946f8190369b946..9390f2b129ed49a0175af5c213f8d99ead097397 100644 (file)
@@ -1,3 +1,10 @@
+2015-12-04  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
+
+       * config/aarch64/aarch64.c (aarch64_override_options_internal):
+       Do not alter target_flags due to TARGET_GENERAL_REGS_ONLY_P.
+       * doc/invoke.texi (AArch64 options): Mention that -mgeneral-regs-only
+       does not affect the assembler directives.
+
 2015-12-04  Dominik Vogt  <vogt@linux.vnet.ibm.com>
 
        * config/s390/s390.c (s390_asm_file_start): Implement hook function to
index 5e3b5e04bd6e0fb15cb195c62f2ce6bcb135a19a..ae4cfb336a827a63a6baadefcb5646a9dbfb7523 100644 (file)
@@ -8118,19 +8118,6 @@ aarch64_override_options_internal (struct gcc_options *opts)
   if (opts->x_flag_strict_volatile_bitfields < 0 && abi_version_at_least (2))
     opts->x_flag_strict_volatile_bitfields = 1;
 
-  /* -mgeneral-regs-only sets a mask in target_flags, make sure that
-     aarch64_isa_flags does not contain the FP/SIMD/Crypto feature flags
-     in case some code tries reading aarch64_isa_flags directly to check if
-     FP is available.  Reuse the aarch64_parse_extension machinery since it
-     knows how to disable any other flags that fp implies.  */
-  if (TARGET_GENERAL_REGS_ONLY_P (opts->x_target_flags))
-    {
-      /* aarch64_parse_extension takes char* rather than const char* because
-        it is usually called from within other parsing functions.  */
-      char tmp_str[] = "+nofp";
-      aarch64_parse_extension (tmp_str, &opts->x_aarch64_isa_flags);
-    }
-
   initialize_aarch64_code_model (opts);
   initialize_aarch64_tls_size (opts);
 
index 586f11f9857614056288ae1dd452247cbc1aa101..3138c7d946eab1ceef28ea67110e6d852a451046 100644 (file)
@@ -12480,10 +12480,9 @@ Generate big-endian code.  This is the default when GCC is configured for an
 
 @item -mgeneral-regs-only
 @opindex mgeneral-regs-only
-Generate code which uses only the general-purpose registers.  This is equivalent
-to feature modifier @option{nofp} of @option{-march} or @option{-mcpu}, except
-that @option{-mgeneral-regs-only} takes precedence over any conflicting feature
-modifier regardless of sequence.
+Generate code which uses only the general-purpose registers.  This will prevent
+the compiler from using floating-point and Advanced SIMD registers but will not
+impose any restrictions on the assembler.
 
 @item -mlittle-endian
 @opindex mlittle-endian
index b304173e6886dec8ad5964a02db071f28354ab24..50df41c365fce038823d211b3a41e68117cad93b 100644 (file)
@@ -1,3 +1,7 @@
+2015-12-04  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
+
+       * gcc.target/aarch64/mgeneral-regs_4.c: New test.
+
 2015-12-04  Dominik Vogt  <vogt@linux.vnet.ibm.com>
 
        * gcc.dg/Wframe-address.c: S/390 requires the -mbackchain option to
diff --git a/gcc/testsuite/gcc.target/aarch64/mgeneral-regs_4.c b/gcc/testsuite/gcc.target/aarch64/mgeneral-regs_4.c
new file mode 100644 (file)
index 0000000..8eb50aa
--- /dev/null
@@ -0,0 +1,9 @@
+/* { dg-options "-mgeneral-regs-only -march=armv8-a+simd+fp -O2" } */
+
+int
+test (void)
+{
+  return 1;
+}
+
+/* { dg-final { scan-assembler "\.arch.*fp.*simd" } } */