arm: Fix emission of Tag_ABI_VFP_args with MVE and -mfloat-abi=hard (PR target/99773)
authorChristophe Lyon <christophe.lyon@linaro.org>
Tue, 30 Mar 2021 12:26:33 +0000 (12:26 +0000)
committerChristophe Lyon <christophe.lyon@linaro.org>
Tue, 30 Mar 2021 13:11:10 +0000 (13:11 +0000)
When compiling with -mfloat-abi=hard -march=armv8.1-m.main+mve, we
want to emit Tag_ABI_VFP_args even though we are not emitting
floating-point instructions (we need "+mve.fp" for that), because we
use MVE registers to pass FP arguments.

This patch removes the condition on (! TARGET_SOFT_FLOAT) because this
is a case where TARGET_SOFT_FLOAT is true, and TARGET_HARD_FLOAT_ABI
is true too.

2021-03-30  Richard Earnshaw  <rearnsha@arm.com>

gcc/
PR target/99773
* config/arm/arm.c (arm_file_start): Fix emission of
Tag_ABI_VFP_args attribute.

gcc/config/arm/arm.c

index e89f5e2..518bfed 100644 (file)
@@ -28150,14 +28150,11 @@ arm_file_start (void)
       if (print_tune_info)
        arm_print_tune_info ();
 
-      if (! TARGET_SOFT_FLOAT)
-       {
-         if (TARGET_HARD_FLOAT && TARGET_VFP_SINGLE)
-           arm_emit_eabi_attribute ("Tag_ABI_HardFP_use", 27, 1);
+      if (TARGET_HARD_FLOAT && TARGET_VFP_SINGLE)
+       arm_emit_eabi_attribute ("Tag_ABI_HardFP_use", 27, 1);
 
-         if (TARGET_HARD_FLOAT_ABI)
-           arm_emit_eabi_attribute ("Tag_ABI_VFP_args", 28, 1);
-       }
+      if (TARGET_HARD_FLOAT_ABI)
+       arm_emit_eabi_attribute ("Tag_ABI_VFP_args", 28, 1);
 
       /* Some of these attributes only apply when the corresponding features
         are used.  However we don't have any easy way of figuring this out.