+2020-03-24 Christophe Lyon <christophe.lyon@linaro.org>
+
+ * doc/sourcebuild.texi (ARM-specific attributes): Add
+ arm_fp_dp_ok.
+ (Features for dg-add-options): Add arm_fp_dp.
+
2020-03-24 John David Anglin <danglin@gcc.gnu.org>
PR lto/94249
equivalent options. Some multilibs may be incompatible with these
options.
+@item arm_fp_dp_ok
+@anchor{arm_fp_dp_ok}
+ARM target defines @code{__ARM_FP} with double-precision support using
+@code{-mfloat-abi=softfp} or equivalent options. Some multilibs may
+be incompatible with these options.
+
@item arm_hf_eabi
ARM target adheres to the VFP and Advanced SIMD Register Arguments
variant of the ABI for the ARM Architecture (as selected with
in certain modes; see the @ref{arm_fp_ok,,arm_fp_ok effective target
keyword}.
+@item arm_fp_dp
+@code{__ARM_FP} definition with double-precision support. Only ARM
+targets support this feature, and only then in certain modes; see the
+@ref{arm_fp_dp_ok,,arm_fp_dp_ok effective target keyword}.
+
@item arm_neon
NEON support. Only ARM targets support this feature, and only then
in certain modes; see the @ref{arm_neon_ok,,arm_neon_ok effective target
+2020-03-24 Christophe Lyon <christophe.lyon@linaro.org>
+
+ * lib/target-supports.exp
+ (check_effective_target_arm_fp_dp_ok_nocache): New.
+ (check_effective_target_arm_fp_dp_ok): New.
+ (add_options_for_arm_fp_dp): New.
+
2020-03-24 Jakub Jelinek <jakub@redhat.com>
PR target/94286
PR target/94238
* gcc.c-torture/compile/pr94144.c: New test.
* gcc.c-torture/compile/pr94238.c: New test.
-
+
2020-03-23 Patrick Palka <ppalka@redhat.com>
PR c++/93805
return "$flags $et_arm_fp_flags"
}
+# Return 1 if this is an ARM target defining __ARM_FP with
+# double-precision support. We may need -mfloat-abi=softfp or
+# equivalent options. Some multilibs may be incompatible with these
+# options. Also set et_arm_fp_dp_flags to the best options to add.
+
+proc check_effective_target_arm_fp_dp_ok_nocache { } {
+ global et_arm_fp_dp_flags
+ set et_arm_fp_dp_flags ""
+ if { [check_effective_target_arm32] } {
+ foreach flags {"" "-mfloat-abi=softfp" "-mfloat-abi=hard"} {
+ if { [check_no_compiler_messages_nocache arm_fp_dp_ok object {
+ #ifndef __ARM_FP
+ #error __ARM_FP not defined
+ #endif
+ #if ((__ARM_FP & 8) == 0)
+ #error __ARM_FP indicates that double-precision is not supported
+ #endif
+ } "$flags"] } {
+ set et_arm_fp_dp_flags $flags
+ return 1
+ }
+ }
+ }
+
+ return 0
+}
+
+proc check_effective_target_arm_fp_dp_ok { } {
+ return [check_cached_effective_target arm_fp_dp_ok \
+ check_effective_target_arm_fp_dp_ok_nocache]
+}
+
+# Add the options needed to define __ARM_FP with double-precision
+# support. We need either -mfloat-abi=softfp or -mfloat-abi=hard, but
+# if one is already specified by the multilib, use it.
+
+proc add_options_for_arm_fp_dp { flags } {
+ if { ! [check_effective_target_arm_fp_dp_ok] } {
+ return "$flags"
+ }
+ global et_arm_fp_dp_flags
+ return "$flags $et_arm_fp_dp_flags"
+}
+
# Return 1 if this is an ARM target that supports DSP multiply with
# current multilib flags.