[ARM][Driver] Warn if -mhard-float is incompatible
Mixing -mfloat-abi=hard with a CPU that doesn't have floating point registers is an error in GCC: cc1: error: '-mfloat-abi=hard': selected processor lacks an FPU Since there is code in the wild (including in clang tests) that relies on Clang's current behaviour, emit a warning instead of an error. Unlike the GCC error, the new warning refers to floating point registers instead of an FPU. This is because -mfloat-abi=hard and -march=armv8.1-m.main+mve+nofp are compatible - in that case floating point registers are required, but an FPU is not required. My initial thought was to use the floating point ABI calculated by arm::getARMFloatABI() but in invalid cases which error for other reasons the ABI is miscalculated and the warning would cause confusion. Therefore only warn if the user specifies the float ABI explicitly. Fixes part of https://github.com/llvm/llvm-project/issues/55755 Differential Revision: https://reviews.llvm.org/D150902
Loading