Author: Victor Campos Date: 2021-04-21T15:03:59+01:00 New Revision: ee3e01627ff876ef2225d691fc4d0a127c4abc78
URL: https://github.com/llvm/llvm-project/commit/ee3e01627ff876ef2225d691fc4d0a127c4abc78 DIFF: https://github.com/llvm/llvm-project/commit/ee3e01627ff876ef2225d691fc4d0a127c4abc78.diff LOG: [Clang][ARM] Define __VFP_FP__ macro unconditionally Clang only defines __VFP_FP__ when the FPU is enabled. However, gcc defines it unconditionally. This patch aligns Clang with gcc. Reviewed By: peter.smith, rengolin Differential Revision: https://reviews.llvm.org/D100372 Added: Modified: clang/lib/Basic/Targets/ARM.cpp clang/test/Preprocessor/arm-target-features.c Removed: ################################################################################ diff --git a/clang/lib/Basic/Targets/ARM.cpp b/clang/lib/Basic/Targets/ARM.cpp index a2c96ad12a76..542c90fe153d 100644 --- a/clang/lib/Basic/Targets/ARM.cpp +++ b/clang/lib/Basic/Targets/ARM.cpp @@ -755,8 +755,12 @@ void ARMTargetInfo::getTargetDefines(const LangOptions &Opts, // Note, this is always on in gcc, even though it doesn't make sense. Builder.defineMacro("__APCS_32__"); + // __VFP_FP__ means that the floating-point format is VFP, not that a hardware + // FPU is present. Moreover, the VFP format is the only one supported by + // clang. For these reasons, this macro is always defined. + Builder.defineMacro("__VFP_FP__"); + if (FPUModeIsVFP((FPUMode)FPU)) { - Builder.defineMacro("__VFP_FP__"); if (FPU & VFP2FPU) Builder.defineMacro("__ARM_VFPV2__"); if (FPU & VFP3FPU) diff --git a/clang/test/Preprocessor/arm-target-features.c b/clang/test/Preprocessor/arm-target-features.c index 9f375162e6ab..5fd1654c9a98 100644 --- a/clang/test/Preprocessor/arm-target-features.c +++ b/clang/test/Preprocessor/arm-target-features.c @@ -141,6 +141,11 @@ // CHECK-V7S-NOT: __ARM_FEATURE_DIRECTED_ROUNDING // CHECK-V7S: #define __ARM_FP 0xe +// RUN: %clang -target arm-arm-none-eabi -march=armv7-m -mfloat-abi=soft -x c -E -dM %s | FileCheck -match-full-lines --check-prefix=CHECK-VFP-FP %s +// RUN: %clang -target arm-arm-none-eabi -march=armv7-m -mfloat-abi=softfp -x c -E -dM %s | FileCheck -match-full-lines --check-prefix=CHECK-VFP-FP %s +// RUN: %clang -target arm-arm-none-eabi -march=armv7-m -mfloat-abi=hard -x c -E -dM %s | FileCheck -match-full-lines --check-prefix=CHECK-VFP-FP %s +// CHECK-VFP-FP: #define __VFP_FP__ 1 + // RUN: %clang -target armv8a -mfloat-abi=hard -x c -E -dM %s | FileCheck -match-full-lines --check-prefix=CHECK-V8-BAREHF %s // CHECK-V8-BAREHF: #define __ARMEL__ 1 // CHECK-V8-BAREHF: #define __ARM_ARCH 8 _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits