@@ -148,6 +148,11 @@ const ARM_FEATURES: &[(&str, Stability, ImpliedFeatures)] = &[
148
148
( "neon" , Unstable ( sym:: arm_target_feature) , & [ "vfp3" ] ) ,
149
149
( "rclass" , Unstable ( sym:: arm_target_feature) , & [ ] ) ,
150
150
( "sha2" , Unstable ( sym:: arm_target_feature) , & [ "neon" ] ) ,
151
+ // This can be *disabled* on non-`hf` targets to enable the use
152
+ // of hardfloats while keeping the softfloat ABI.
153
+ // FIXME before stabilization: Should we expose this as a `hard-float` target feature instead of
154
+ // matching the odd negative feature LLVM uses?
155
+ ( "soft-float" , Unstable ( sym:: arm_target_feature) , & [ ] ) ,
151
156
// This is needed for inline assembly, but shouldn't be stabilized as-is
152
157
// since it should be enabled per-function using #[instruction_set], not
153
158
// #[target_feature].
@@ -790,6 +795,9 @@ impl Target {
790
795
match self . llvm_floatabi . unwrap ( ) {
791
796
FloatAbi :: Soft => {
792
797
// Nothing special required, will use soft-float ABI throughout.
798
+ // We can even allow `-soft-float` here; in fact that is useful as it lets
799
+ // people use FPU instructions with a softfloat ABI (corresponds to
800
+ // `-mfloat-abi=softfp` in GCC/clang).
793
801
NOTHING
794
802
}
795
803
FloatAbi :: Hard => {
0 commit comments